知识卡片
微服务与SOA划清界限的代价是把决策权压回架构师
内容
微服务提出者刻意与SOA划清界限,明确声明”微服务不是SOA的变体”,而不只是对 SOA的修修补补——用”实践标准”取代”规范标准”,摒弃SOAP/ESB/BPM等一整套 强制性技术标准,服务间可以自由选择RPC框架、注册中心等实现方式。这带来的 自由是一把双刃剑:对普通开发者是友善的(需要什么工具就引入什么,团队熟悉 什么就用什么,胶水框架进一步屏蔽复杂性),但对架构者却意味着SOA时代已经 统一解决掉的服务发现、跟踪治理、负载均衡、故障隔离、认证授权、事务处理等 问题,重新变成了需要架构师自己权衡决策的开放问题——仅服务间远程调用一项, 候选方案就有RMI/Thrift/Dubbo/gRPC/Motan2/Finagle/brpc等十余种。这揭示了 一个架构设计的普遍规律:去掉统一规范约束换来的局部自由,代价往往是把原本 可以”照章办事”的选择重新变成需要专业判断力的决策负担,而技术架构者的核心 职责正是”决策权衡”——利弊都要清楚,才谈得上取舍。
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第1章"服务架构演进史"1.4节
"微服务时代"(源文件:_epub-src对应OEBPS/Text/chapter8.xhtml)
- 结论依据:原文引用Martin Fowler/James Lewis"微服务不应再被打上SOA标签"
的声明,说明微服务摒弃SOA统一规范后带来的自由,同时列举RPC/服务发现的
十余种候选方案说明这种自由把选择困难重新压给了架构者,并直接点明"技术
架构者的第一职责就是决策权衡",支撑本卡片结论。
- 原始内容:微服务对架构者却是满满的"恶意",对架构能力的要求已提升到史无
前例的程度……技术架构者的第一职责就是决策权衡,有利有弊才需要决策,有取
有舍才需要权衡,如果架构者本身的知识面不足以覆盖所需要决策的内容……恐怕
将无可避免地陷入选择困难症的境遇之中。