先悟透这三个理念,再来谈如何扩展你的架构先悟透这三个理念,再来谈如何扩展你的架构
关于“微服务”大家应该并不陌生,最近”聊聊架构”的各位老师也做了不少分享,我也是微服务架构的热粉以及实践者。
其实“微服务”的设计思想很好,它揭示了一种全新的思考方式以及系统设计思路。不过这次分享希望从另外一个角度,
谈谈在架构实践中衍生出来的思想方法提炼,我把它们统称为“微智能”。
微智能设计思想
“微智能”这个概念起源于智能家居,是目前智能硬件领域的一股创新思想。早期的智能家居是“电气自动化”。比如电控
窗帘是可以通过电气设备进行远程控制开关;第二代智能家居实现了“互联网化”,这时,电控窗帘就可以通过WiFi,蓝
牙等技术与互联网设备相连,于是智能手机就能远程操控窗帘。
重点是第三代智能家居提出了“微智能”的概念,强调通过传感器自动捕获环境信息,并结合人的使用习惯偏好,实现自
主调控。这时,智能窗帘会根据时节,气温,光照等信息,再考虑主人的起床/午休/睡眠时间,甚至从日程安排中提取
影响因素来决定窗帘的状态,而此时窗帘也呈现出更多的状态:打开面积,角度,透光度等等(之前是“开、关”两种状
态)。
“智能”这个词,通常是相对人而言,智能家居通过体现“智”,更好的服务人的生活;那么作为同样服务人的生产和生活
的软件系统是否可以借鉴这种思想?
Bingo,通过实践证明,“微智能”的思想完全可以移植到软件系统架构中。先明确一下定义,这里的“智能”并非“人工智
能”(最近AlphaGo太火了,对AI感兴趣的同学,可以出门左转去看Google的TensorFlow ),是指基于“自动化”手段形
成“闭环反馈回路”或“自适应处理”的系统或组件。之所以叫“微智能”,是因为它可以有效地改善系统的”智商”,提升系统
的自动化水平,使之更加“聪明”地工作,从而提升系统应急“灵敏”度,降低系统运维成本。
微智能设计思想体现以下几个特征:
自动发现:即真实地反映现实世界,尽可能利用“自动化”手段收集“输入”数据,这里的数据包括业务数据和系统元数
据。由于现实世界很复杂,变化快,要么人工整理慢,不及时,要么根本无法处理。
当然,“自动发现”在互联网里并不新鲜,最经典的就是搜索引擎的爬虫,通过对网页的分析,不断抽取互联网中的信
息,但爬虫是从业务层面体现“自动发现”,而“微智能”强调从系统架构,“微”指代系统或系统组件,“智能”体现系统或系
统组件之间关联具备“自动发现”的机制。
自我维护:即形成“闭环”反馈回路,将“输入”或“中间”或“结果”数据反馈到系统中,叠加成新的“输入”或“中间”或“结果”数
据。这里强调“闭环”,这是与传统“非闭环”的反馈系统的重要区别,在第二部分会着重说明。
自我维护与自动发现是相互作用的,因为从真实世界获得的信息会失真,会过期,通过不断迭代地自动发现,使系统
不断趋近真实。值得注意的是,由于反馈永远是滞后的,所以迭代的结果只是趋近真实,获得可接受的数据。
自动适应(适配):适配的涵义很广,从宏观方面,包括系统集成,任务调度,资源管控等,从微观方面,包括数据
处理,格式转换,接口协商等。自动适应是基于自动发现,自我维护的延展,是落地“智能”效果的体现。根据自动发现
的输入数据适配相应的处理;根据自我维护的反馈,不断调整以达到优化的适配效果。这也是与传统“处理”系统的重要
区别,在第二部分会进行说明。
下图是微智能设计思想的关联图:
与传统处理系统比较
这里的传统“处理系统”是指不同时具备“微智能”设计思想特征的系统。一般从应用场景上区分,可分为三类: