知识卡片
微服务的外部与内部驱动力
内容
[[反对为性能而做微服务化的论点]]之外,真正合理、常见的微服务驱动力 来自组织的外部和内部两方面。外部因素:没有技术能包打天下(如系统用 Java开发,但AI训练离不开Python生态、分布式协调工具etcd正蚕食ZooKeeper、 集中式缓存首选C写的Redis,异构技术分布式部署很多时候不是想不想、而是 不可避免);个人能力因素制约系统发展(招不到大量高端开发者时,微服务 能让少数技术专家掌控关键架构约束力,把大量不那么靠谱的螺丝钉式开发者 或外包团队的错误隔离在局部,不至于弄崩全局);外部商业要求(甲方招投标 文件明文要求支持微服务架构、分布式部署时,技术上的犹豫就没有讨价还价 余地)。内部因素:变化发展特别快的创新业务系统会自主向微服务靠拢(需求 方要试错创新、开发方资源永远不够、运维方要熬夜救火,微服务带来的快速 迭代、低耦合、可观测性、自愈能力符合所有相关方的共同利益);大规模、 历史包袱沉重的系统也可能主动向微服务靠拢——这类系统结局通常有三种: 日渐臃肿但客户忍了、系统持续苟活(如COBOL遗留系统靠年长程序员续命); 客户忍不了、痛下决心新旧双轨运行淘汰旧系统;客户忍不了但系统难以整体 淘汰,靠微服务把系统逐步拆除替换(Netflix自称就是这类成功案例)。这些 驱动力都指向同一个判断标准:微服务最主要的目的是对系统做有效拆分、 实现物理层面的隔离,核心价值是让局部服务能敏捷卸载部署,而局部持续 更迭正是系统整体具备Phoenix特性的必要条件。
结构图:
flowchart TD
A[微服务驱动力] --> B[外部因素]
A --> C[内部因素]
B --> B1[没有技术包打天下]
B --> B2[个人能力制约, 少数专家掌控架构]
B --> B3[甲方商业招投标要求]
C --> C1[创新业务系统自主快速迭代需要]
C --> C2[大型历史包袱系统的三种结局: 苟活/双轨淘汰/逐步拆除替换]
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第16章"向微服务迈进"16.1节
"目的:微服务的驱动力"(源文件:_epub-src对应OEBPS/Text/chapter179.xhtml)
- 结论依据:原文分别列举没有技术包打天下、个人能力制约、外部商业要求
三个外部因素,以及创新业务系统自主迁移、历史包袱系统三种结局两个
内部因素,并总结微服务最主要目的是对系统进行有效拆分实现物理隔离,
直接支撑本卡片的结构梳理。
- 原始内容:软件系统选择微服务架构,通常比较常见的、合理的驱动力来自
组织外部、内部两方面……微服务最主要的目的是对系统进行有效拆分,实现
物理层面的隔离,微服务的核心价值就是拆分之后的系统能够让局部的单个
服务有可能实现敏捷地卸载、部署、开发、升级。