知识卡片
配置中心与接口框架:统一管理,避免把ESB的活转嫁给每个微服务
内容
配置中心要解决的问题是:微服务节点数量庞大,靠人工逐台登录机器修改配置,效率低还容易出错,尤其是部署或排障时需要快速增删改查配置,人工操作根本跟不上节奏;而且有些运行期配置需要动态修改并让所有节点即时生效,这更是人工操作做不到的。因此需要一个统一的配置中心来管理所有微服务节点的配置,功能上要覆盖配置版本管理(比如同一个微服务,10个节点服务移动用户、20个节点服务联通用户,配置项相同但配置值不同,需要能区分管理)、增删改查配置、节点管理、配置同步、配置推送。接口框架要解决的是另一个层面的问题:微服务提倡用HTTP/REST或RPC这类统一的轻量协议通信,但光统一协议还不够,还必须统一协议里传递的数据格式(比如约定协议是HTTP/REST,还要进一步约定数据格式是JSON、且JSON要遵循统一的字段规范)——如果只规定了协议、没规定数据格式,就会出现有的微服务用XML、有的用JSON、有的用键值对,即使都用JSON,字段规范也可能各不相同,这样每个微服务都要自己适配几套甚至几十套接口协议和数据格式,本质上是把原本该由ESB统一处理的事又转嫁回了每个微服务自己头上,效率显然无法接受,因此需要统一接口框架来约束数据格式。接口框架并不是一个独立运行的系统,而是以库或包的形式提供给所有微服务直接调用,比如某个基础技术团队针对统一的JSON规范提供Java包、Python包、C库等多语言版本的解析库。
参考来源
- 位置:《从零开始学架构》第36讲《微服务架构最佳实践 - 基础设施篇》"配置中心""接口框架"(源文件:_epub-src/OEBPS/text00003.html)
- 结论依据:原文说明"微服务的节点数量非常多,通过人工登录每台机器手工修改,效率低,容易出错……需要一个统一的配置中心来管理所有微服务节点的配置",并指出接口协议若不统一数据格式"每个微服务都要适配几套甚至几十套接口协议,相当于把曾经由 ESB 做的事情转交给微服务自己做了……因此需要统一接口框架",直接支撑本卡片结论。
- 原始内容:微服务的节点数量非常多,通过人工登录每台机器手工修改,效率低,容易出错……因此需要一个统一的配置中心来管理所有微服务节点的配置……相当于把曾经由 ESB 做的事情转交给微服务自己做了,这样做的效率显然是无法接受的,因此需要统一接口框架。