前段时间去某互联网公司面试,在CTO终面环节被问到一个关于服务治理的问题:请讲讲关于服务治理的经验,简述对SOA的一些看法。笔者正好在传统企业级系统架构下参与过相关SOA治理方案的制定与实施,同时在近年也有些许微服务方面的治理实践。遂在回答该问题时重点对两种不同场景下的治理进行的比较。现根据当时的回答做如下回忆整理:
传统SOA治理的主要目标是对企业数据资产的重用,由于企业在IT信息化推进中不断使用当时历史条件下的IT技术进行系统建设,系统质量受IT团队研发水准,开源/商用中间件产品技术栈发展影响深远。过去的数据资产存储对象在近20年的发展变迁主要为sql server2000/2005/2008/2012,oracle 8i/9i/10g/11gr1/11gr2,mysql 3/4/5,xml本地文本档,hadoop hive及近年流行的各类nosql,全文索引类中间件产品,通信层由corba,soap升级为近年流行的http+json及各类RPC。为了重用各信息孤岛的功能逻辑,捡拾有价数据,企业在IT信息技术发展到一定阶段(通常为被动的)必须尽快设计解决方案并通过一个强有力的应用系统/组件实现资产整合。 基于SOA服务治理理论的Oracle Service Bus,IBM Message Broker,BizTalk等各类商用ESB产品便是在此背景下应运而生的。然而此类ESB产品本身也有其固有缺陷,其主要问题是容易形成性能瓶颈,天然单点故障,冗长(协议切换,地址路由,安全认证,缓存,事件处理,消息通知,高可用部署等等)复杂的功能清单学习成本极高。在新型微服务架构下,基于服务注册发现的RPC通信机制则天然的解决了这类问题。下篇我们详述微服务的SOA治理并与传统SOA进行比较。