架构模式
一、架构模式的第一性分类轴
架构模式并非“招式集合”,而是对系统复杂性来源的不同应对方式。所有架构模式,均可投影到以下稳定维度上。
1. 控制流主导权
- **调用驱动**:谁发起、谁控制执行顺序
- **数据驱动**:数据到达即触发处理
- **事件驱动**:状态变化驱动行为
2. 数据与状态位置
- 状态是否集中
- 状态是否可共享
- 状态是否可重建
3. 构件耦合方式
- 同步 / 异步
- 显式调用 / 隐式触发
- 时间耦合 / 空间耦合
4. 演进与扩展方式
- 通过修改扩展
- 通过组合扩展
- 通过插件化扩展
后续所有模式,均基于这些维度进行组织。
二、架构风格(Architecture Style)
架构风格关注的是:系统整体组织方式,决定了系统的“力学结构”。
2.1 数据流风格(Data-Flow Oriented)
本质
- 以**数据流动**作为系统的主导力量
- 计算单元之间不共享状态
解决的根本问题
- 如何提高吞吐量
- 如何降低处理步骤之间的耦合
核心特征
- 顺序或半顺序处理
- 数据只向前流动
- 节点职责单一
子模式
批处理(Batch Processing)
- 强时间顺序
- 强完整性校验
- 强流程控制
管道-过滤器(Pipe & Filter)
- 每个过滤器只关心输入与输出
- 管道负责数据传输
- 支持并行与复用
代价
- 调试困难
- 对实时交互不友好
2.2 调用-返回风格(Call-Return Oriented)
本质
- 以**控制流**为核心
- 调用方掌控执行顺序
解决的根本问题
- 如何分解复杂问题
- 如何通过层次化降低认知负担
典型形态
- 主程序 / 子程序(过程式)
- 面向对象调用
- 分层架构
分层架构要点
- 上层只依赖下层接口
- 层内高内聚,层间低耦合
代价
- 层级过多导致性能与灵活性下降
2.3 仓库风格(Repository Oriented)
本质
- 以**共享数据**为中心
- 构件通过共享数据协作
典型形式
- 数据库系统
- 超文本系统
- 黑板系统
黑板模式的本质
- 问题空间逐步收敛
- 多专家系统协作求解
代价
- 数据成为系统瓶颈
- 数据一致性复杂
三、架构模式(Architecture Pattern)
架构模式是在某一风格下,对特定问题的可复用解决方案。
3.1 事件驱动架构(EDA)
本质
- **状态变化驱动行为**
- 构件之间不直接调用
解决的根本问题
- 系统扩展性
- 构件解耦
核心特征
- 异步
- 隐式调用
- 松耦合
两种组织方式
Mediator(有中心协调)
- 事件语义转换
- 业务流程编排
Broker(无中心分发)
- 纯消息路由
- 无业务逻辑
代价
- 调试与测试复杂
- 异常路径成本高
3.2 微内核架构(Microkernel / Plug-in)
本质
- **稳定核心 + 可变插件**
解决的根本问题
- 长期演进
- 功能差异化扩展
核心设计点
- 核心职责最小化
- 插件生命周期管理
- 插件通信机制
代价
- 架构设计难度高
- 插件边界难以划分
四、领域逻辑组织模式(Domain Logic Organization)
关注:业务规则以什么形式存在。
4.1 事务脚本
本质
- 以过程为中心
适用场景
- 业务简单
- 生命周期短
演进风险
- 复杂度指数增长
4.2 领域模型
本质
- 数据与行为合一
- 业务概念显性化
核心价值
- 抵抗复杂性
- 业务语言统一
代价
- 建模成本高
- ORM复杂
4.3 表模块
本质
- 围绕数据表组织逻辑
特点
- 强依赖数据库结构
- 适合数据密集型系统
4.4 服务层
本质
- 定义系统对外边界
- 协调领域对象
引入动机
- 多客户端复用
- 系统集成
五、基础设施与机制模式(Infrastructure & Mechanism)
5.1 数据映射模式
- 表数据入口
- 行数据入口
- 活动记录
- 数据映射器
趋势:领域模型 + 数据映射器
5.2 并发控制模式
根本矛盾
- 并发 vs 一致性
核心策略
- 乐观锁
- 悲观锁
- 粗粒度锁
- 隐含锁
5.3 会话状态管理
- 客户端会话状态
- 服务端会话状态
- 数据库存储
本质权衡:无状态扩展性 vs 状态一致性
六、分布式边界模式
6.1 远程外观
- 粗粒度接口
- 减少网络往返
6.2 DTO
- 跨进程数据载体
- 仅包含可序列化数据
6.3 组装器
- 领域对象与DTO解耦
七、架构模式演进路径(认知模型)
- 简单系统:事务脚本 → 表模块
- 复杂业务:事务脚本 → 领域模型 → 服务层
- 扩展压力:分层 → 事件驱动 / 微内核
架构设计不是选模式,而是管理复杂性来源。
八、总结
- 架构模式是对复杂性的回应
- 模式没有对错,只有边界
- 优秀架构 = 稳定核心 + 可演进结构
关联内容(自动生成)
- [/软件工程/架构/架构.html](/软件工程/架构/架构.html) 架构模式是软件架构设计的具体实现方式,与整体架构理念和原则密切相关
- [/软件工程/架构模式/分层架构.html](/软件工程/架构模式/分层架构.html) 分层架构是架构模式中最基础和常见的模式之一,与本文档中提到的架构风格和模式有直接关联
- [/软件工程/设计模式/设计模式.html](/软件工程/设计模式/设计模式.html) 设计模式与架构模式在系统设计中有密切联系,设计模式是架构模式在更细粒度上的实现
- [/软件工程/微服务/微服务.html](/软件工程/微服务/微服务.html) 微服务架构是现代架构模式的重要发展方向,体现了本文档中提到的构件解耦和扩展性原则
- [/软件工程/架构模式/响应式架构.html](/软件工程/架构模式/响应式架构.html) 响应式架构是事件驱动架构的延伸和发展,体现了现代系统对高可用性和弹性的要求
- [/软件工程/架构/系统设计/架构设计.html](/软件工程/架构/系统设计/架构设计.html) 系统架构设计是架构模式的实际应用场景,将理论模式转化为具体的设计方案
- [/软件工程/架构模式/Web框架.html](/软件工程/架构模式/Web框架.html) Web框架是架构模式在Web开发中的具体体现,展示了如何将架构模式应用于特定领域
- [/软件工程/架构/系统设计/分布式/分布式系统.html](/软件工程/架构/系统设计/分布式/分布式系统.html) 分布式系统设计中广泛应用了本文档提到的各种架构模式,特别是事件驱动和分层架构
- [/软件工程/架构/架构治理.html](/软件工程/架构/架构治理.html) 架构治理确保架构模式在实际项目中的正确实施和持续演进
- [/软件工程/领域驱动设计.html](/软件工程/领域驱动设计.html) DDD与架构模式密切相关,特别是在领域逻辑组织模式方面,两者相辅相成