架构模式选型对比
一个 CTO 的纠结
2023年,我们 CTO 在选架构时纠结了整整两个月:
最后他选择了"全部都要"——结果系统变得四不像,没人能维护。
架构选型的核心问题不是"哪个最好",而是"哪个最适合当前的问题"。
一、架构模式全景图🔴
1.1 按复杂度排序
二、分层架构 vs 六边形架构🔴
2.1 核心区别
2.2 代码对比
三、CQRS vs 传统 CRUD🔴
3.1 适用场景对比
3.2 CQRS 的代价
CQRS 的问题:
- 读写模型可能不一致
- 实现复杂度高
- 需要额外的数据同步机制
- 开发和维护成本翻倍
⚠️
CQRS 不是银弹。只有当你确实有"复杂查询"或"高并发读"的需求时,才考虑使用。简单业务用 CQRS 是过度设计。
四、六边形 vs 洋葱 vs 整洁架构🟡
4.1 共同点
三个架构的核心思想是一样的:让核心业务逻辑独立于外部依赖。
4.2 区别
4.3 整洁架构层次
五、微内核架构🟡
5.1 适用场景
5.2 结构
六、架构选型决策框架🔴
6.1 决策树
6.2 团队因素
6.3 成本评估
【架构权衡】 没有"最好"的架构,只有"最合适"的架构。选择架构时要考虑:业务复杂度、团队能力、时间约束、维护成本。最差的架构是"过度设计",其次是"设计不足"。
七、实战案例
7.1 案例一:电商订单系统
初始状态:传统三层架构,Service 5000 行
分析:
- 业务复杂(多种订单类型、促销规则、退款流程)
- 团队 10 人
- 需要长期维护
选型:六边形 + 简单 CQRS
结果:
- 核心业务逻辑与外部依赖解耦
- 新增订单类型只需要加新的适配器
- 读模型独立优化,查询性能提升 5 倍
7.2 案例二:内部工具平台
初始状态:没有架构,增删改查
分析:
- 业务简单
- 团队 3 人
- 需要快速上线
选型:简单分层架构 + DDD 部分实践
结果:
- 快速开发
- 没有过度设计
- 后续扩展预留了接口
八、面试总结
8.1 核心追问
- "你用过哪些架构模式?" —— 结合项目经验
- "分层和六边形的区别?" —— 核心是否独立
- "什么情况下用 CQRS?" —— 读写分离需求
- "整洁架构的层次是什么?" —— 4 层结构