微服务架构体系的深度治理 什么是架构体系?

在QCon10周年的大会上 , 我做了题为《微服务架构体系的深度治理》的分享 , 现将PPT和演讲文稿整理出来 , 希望能够给仍在(微)服务治理迷局中夺路狂奔的同学们一点启发和指引 。
这次分享首先介绍了服务治理的发展历史 , 它的4个阶段;接着重点介绍微服务度量及分析体系的构建;最后 , 分别针对微服务线上及线下体系的治理进行深入探讨 。
“治理”这个词 , 在汉语词典中是“整治、修整”的意思 。 任何一个事物 , 当它的复杂度达到一定程度时 , 就可能出现问题 , 我们需要对问题进行梳理、改进和优化 。 因此 , 对事物的治理 , 本质上是对事物复杂度的管理 。 同样的 , 服务治理就是对服务复杂度膨胀问题的管控及管理 。
【单体应用及其治理需求】在业务发展的早期 , 我们也许用一台机器就能扛住线上所有用户的访问 , 所有的功能和模块都被整合在一个单体应用中 , 独立部署 , 这在企业应用中非常普遍 。 这个时期没有什么“服务化”的概念 , 也自然谈不上服务治理 。 系统的复杂度更多来自于系统内部组件间相互调用及依赖关系 , 很多企业都会维护一个庞大的组件库 , 力图通过“搭积木”的方式来构建应用系统 。 由于组件之间存在版本和依赖性方面的问题 , 所以需要进行组件治理 , 这是单体应用治理方面的主要需求 。 我在从事企业级应用开发的时候 , 做过一段时间组件治理 , 组件库的构建和维护比较复杂 , 有一套自己的方法论体系 。
【企业级SOA及其治理】
随着企业IT建设的不断深入 , 系统越建越多 , 系统之间有了互联互通及整合的需求 。 为了实现系统整合 , 早期业界尝试过很多技术 , 一种是最简单的点对点直连模式 , 另一种是基于RMI、COBAR、DCOM这类中间件技术搞的星形连接模式 , 但效果都不太好 , 都没办法彻底解决标准化的问题 。
后来 , IBM联合一些大厂推出了面向服务的架构(SOA) , 并制定了一系列的标准 。 SOA最核心的诉求就是构建一条企业服务总线(ESB) 。 通过SCA规范开发服务适配器 , 将不同的异构系统接入服务总线 , 通过SDO标准进行请求数据封装 , 服务之间通过WebService协议进行互相调用 , 通过BPEL流程标准对服务进行流程化的编排 , 创建出来的服务可以通过UDDI协议对外暴露 , 以供第三方应用或服务调用 。 由于涉及的软、硬件资源越来越多 , “治理”的需求也就应运而生 。 事实上 , 服务治理这个概念是随着SOA技术的兴起被同步提出来的 。
这个时期的服务治理规范基本上被IBM这些传统IT大厂一手把持 , 比如IBM的SOA Governance & Management Method(SGMM)标准 。 我们知道IBM做事有一个特点 , 喜欢把简单的事情复杂化 , 它的这套SGMM标准全面覆盖企业IT的管理流程、工具及基础设施建设、甚至企业的组织架构 , 定义了一堆的人员角色、规范、做事流程 , 非常复杂 。 你得掏钱来让他给你做咨询才能把这套体系玩起来 , 整个技术栈及流程太重了 , 对人的要求也非常高 。 这严重制约了它的推广和普及 , 但它的一些思想还是很好的 , 比如重视各个环节的指标采集和度量 , 重视全生命周期的治理 , 这些都可以给我们有益的启发和参考 。
【互联网服务化及其治理】
2010年之后 , 伴随着互联网应用的大规模爆发 , 又兴起了一股由互联网企业主导的所谓“轻量化SOA”的技术浪潮 , 也就是我们常说的“分布式服务化”技术 。
这一阶段 , 服务化的目标不仅要解决系统间的整合问题 , 还要解决系统的可伸缩性问题 。 大量互联网公司开始对自己的系统进行“服务化”改造 , 以期获得横向扩充的能力 , 应对快速增长的业务和访问量 。 这一时期使用的技术五花八门 , 有使用代理网关模式 , 也有采用RPC直连方式 , 技术上没有统一的标准 , 也涌现出了像dubbo这样的明星产品 。
这个时期的服务治理更多是聚焦在对服务的线上生命周期的管控及治理上 , 包括服务的限流、降级、容错 , 以及服务的弹性伸缩、灰度发布等等 , 线下的治理基本上不涉及 。
我们知道 , 2C业务服务多、节点多 , 由于涉及到大量的服务节点 , 靠人肉的方式是肯定管不过来的 , 因此这一时期的服务治理很强调自动化 , 尤其是和自动化运维技术结合在一起 。
【微服务及其治理】互联网发展到今天已经成了一种基础资源 , 越来越多的业务被搬到线上 , 线上的竞争也越来越激烈 。 互联网企业为了生存 , 就要去竞争、去打仗 。 为了适应业务的快速发展 , 在技术迭代上一定要“快” , 所谓“天下武功、唯快不破” 。

推荐阅读