知识卡片
反对为性能而做微服务化的论点
内容
“微服务是信息系统发展的必然阶段,为了应对压力、获得更好性能,自然会 演进到能扩缩自如的微服务架构”——这个说法看似合理,作者旗帜鲜明地反对 把”获得更好性能”当作重构为微服务的主要目的。理由有两层:第一,硬件 成本能持续稳定下降,软件开发成本不能——这正是”没有银弹”论断的核心 (Fred Brooks《没有银弹》),能靠扩展硬件解决的问题,就不该动用复杂的 软件方法去解决,现代单体系统同样能做可扩缩设计、能集群部署,云计算 数据中心的处理能力几乎可视为无限,纯粹为了性能而选分布式,那是40年 前”原始分布式时代”就已经追求过、被证明代价高昂的目标。第二,性能不会 因为采用微服务架构而凭空产生——把系统拆成多个微服务,只要业务流程 在某个关键环节依然被卡住,整体表现往往还不如单体,缺乏清晰的职责划分 会让扩展性失效,多加机器有时还不如单机划算。把这句话开头的”性能”换成 “代码质量”“生产力”,结论同样成立——技术选型的收益判断,必须落到”这样 做是否真的解决了目标问题”,而不能停留在”听起来更先进”这个模糊的直觉 上。
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第16章"向微服务迈进"16.1节
"目的:微服务的驱动力"(源文件:_epub-src对应OEBPS/Text/chapter179.xhtml)
- 结论依据:原文明确"笔者个人的态度是旗帜鲜明地反对以'获得更好的性能'
为主要目的,将系统重构为微服务架构",并引用硬件成本下降软件成本不能
下降的银弹论断,以及拆分后关键节点仍卡住业务流程导致整体不如单体的
论证,直接支撑本卡片结论。
- 原始内容:硬件的成本能够持续稳定地下降,而软件开发的成本则不可能。
而且,性能也不会因为采用了微服务架构而凭空产生……没有清晰的职责
划分,导致扩展性失效,多加机器往往还不如单机。