首页/开发/系统分析与架构设计速查/模块化单体(Modular Monolith)
架构风格与模式58 条

模块化单体(Modular Monolith)

一个部署单元内按业务模块划分,模块之间通过显式接口通信并禁止跨模块访问内部实现;保留单体部署的简单性,同时获得清晰边界。

边界手段模块 API、包结构约束、构建期依赖检查
数据单库但按模块划分 schema 或表所有权
价值后续可平滑演进为服务化
  • 按子域划分模块,以业务能力命名,不按技术分层
  • 显式接口:模块只暴露 API 包,内部实现包禁止外部引用
  • 构建期约束:接入依赖检查工具,违规引用直接失败
  • 数据所有权:表归属单一模块,跨模块取数走接口
  • 接口兼容:模块 API 变更走扩展-收缩,避免同步改多处
  • 演进路径:边界稳定后优先拆分读多写少、团队独立的模块

依赖检查工具示例

技术栈工具
JavaArchUnit
Pythonimport-linter
C# / .NETNetArchTest
JS / TSdependency-cruiser
模块化单体的验收标准是“能否在不改动其他模块的前提下替换某个模块实现”。

易错点

  • 模块间直接调用内部类,边界停留在文档上
  • 共用一张宽表,模块数据所有权不清

数据来源与参考

  • Simon Brown 模块化单体相关文章
  • Sam Newman《Monolith to Microservices》(O'Reilly)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌