跳到主要内容

横向对比

约 4 分钟997 字更新于 2026/10/04

本篇汇总 五种经典架构模式 的评分、结构和组合方式。

书中评分汇总​

下表汇总前面各章,来自《软件架构模式》(2015 版报告)的二值定性评价,不是测量值。Fundamentals 后来改成了更多维度的 1 到 5 星评分,部分结论有差异(例如微服务的“易开发性”)。

维度分层事件驱动微内核微服务基于空间
整体敏捷性低高高高高
易部署性低高高高高
可测试性高低高高低
性能低高高低高
可扩展性(伸缩)低高低高高
易开发性高低低高低

一个有意思的规律:没有一个模式全是“高”。分层用敏捷性和伸缩换来了易开发和易测试;事件驱动和基于空间用可测试性和易开发换来了性能和伸缩;微内核在伸缩上让步;微服务在性能上让步。

结构性对比​

维度分层事件驱动微内核微服务基于空间
部署形态单体分布式通常单体分布式分布式
切分方式技术分区按事件处理职责核心 + 按功能的插件按业务能力按处理单元
通信进程内调用异步事件进程内或远程同步 REST 或消息内存 + 异步复制
数据一个共享库各处理器自行处理核心库 + 插件自带每服务一库内存为主,异步落库
关键名词封闭 / 开放层、隔离层、污水池中介者、代理、事件通道、处理器核心系统、插件、注册表、契约服务组件、粒度、三种拓扑处理单元、四种网格、数据泵
主要风险大泥球、污水池一致性、调试难核心契约难改分布式单体、运维数据冲突、成本
与插件化的关系核心内部常用事件是插件的接入方式本身远程插件 ≈ 服务基本无关

决策图​

这张图以“要不要插件化”为终点问题,但先排除那些其实别的模式更合适的情况。

模式怎么组合​

五种模式并不互斥,书里自己就多次提到组合:

  • 微内核的核心系统内部通常是分层的。
  • 微内核的插件可以是远程服务,于是系统的一部分变成了微服务。
  • 微服务之间的后续动作常用事件驱动(代理拓扑)。
  • 基于空间的处理单元内部可以是分层或模块化的;处理网格本身就像一个事件中介者。
  • 事件驱动的单个事件处理器内部也可以是分层的。

一个组合示例:一个面向多地区的保险平台。

读这张图:

  • 最外层按业务能力拆成服务(微服务)。
  • 只有“理赔规则按地区变化”这一块用了微内核——插件化只出现在真正需要按维度定制的地方。
  • 核心系统内部仍然是普通的分层。
  • 报价服务只在特定高峰时段需要极端伸缩,才用基于空间。
  • 服务之间的旁路反应用代理拓扑,跨服务的流程(客户搬家)用中介者拓扑。
  • 反欺诈服务以远程插件的形式接入理赔核心,说明“远程插件”和“微服务”之间的边界其实很近。

回到插件化: 微内核是五种模式里唯一一个以“可扩展、可定制”为核心目标的。书中评分标出了代价:伸缩低、开发难,而且核心契约一旦公开就很难改。判断要不要做插件化,先确认核心的快乐路径已经稳定,扩展确实要按客户、地区或第三方变化;再用微内核里的决策图确定插件形态。