软件架构模式
绪论
架构选择的本质,是在特定时代约束下,对质量属性做“有意识的优先级排序”
最早期软件开发
主要矛盾
- 计算资源极其稀缺,但任务正从“算一次”走向“重复算、稳定算、规模算”
结构抓手 先把重复任务写进程序,再把执行秩序写进流程
- 程序与数据组成作业,统一送入系统执行
- 执行围绕批处理与调度组织,强调吞吐和稳定
- 交互极弱,输出通常在作业完成后统一返回
主机 / 终端
新约束
- 企业事务数字化
主要矛盾
- 越来越多用户需要共享同一套核心数据与事务能力
系统从执行任务转向服务一群用户
结构抓手 通过强中心+弱终端换取一致性、安全性与治理能力
- 主机承担几乎全部事务处理,数据存储与权限控制
- 终端主要负责输入、显示,不承担复杂业务逻辑
- 安全、审计和一致性都被集中到中心系统
通过事务中心化,把多人共享从混乱访问变成可治理的制度化系统
- 优先保障
- 一致性
- 安全性
- 可靠性
- 可审计性
- 相对牺牲
- 易用性
- 交互响应性
- 局部可修改性
C / S 架构
新约束
- PC和GUI普及
主要矛盾
- 用户开始要求更丰富、更快速的桌面交互
结构抓手 把富交互从中心系统迁移到桌面端
- 客户端负责UI与部分本地逻辑,提升响应性与体验
- 服务器负责共享数据与部分公共逻辑
- 前后端通过网络协作,形成分布式桌面计算
通过客户端做交互、服务器保数据的分工,第一次把企业软件真正贴近了桌面用户
它用胖客户端换来了更好的体验,但也把安装、升级和版本控制问题带到了桌面端
- 优先保障
- 易用性
- 响应性
- 交互体验
- 相对牺牲
- 可部署性
- 可维护性
- 兼容性
- 统一治理
三层 / 分层
新约束
- Web成为统一入口
主要矛盾
- 要降低部署复杂度,并把系统内部职责整理清楚
结构抓手 通过职责分层控制变化影响,而不是只做客户端瘦身
- 表示层负责接入与界面呈现,统一用户入口
- 业务层承载业务规则、流程控制与领域逻辑
- 数据层负责持久化与数据访问,形成清晰职责边界
通过统一入口与职责分层,把部署问题和维护问题同时压了下来
分层特别适合单系统治理,但复杂度仍然持续堆积在单应用边界之内
- 优先保障
- 可维护性
- 可修改性
- 安全性
- 可部署性
- 相对牺牲
- 极致性能
- 跨系统协同灵活性
- 快速局部自治
SOA
Service-Oriented Architecture
新约束
- 系统数量激增
主要矛盾
- 企业需要跨系统复用业务能力,并把端到端流程打通
通过契约+总线+编排+治理,把企业从孤岛系统集合拉向了能力网络
解决了企业整合,但也让服务粒度、治理体系和ESB(Enterprise Service Bus 企业服务总线)成为新的重量级约束
- 优先保障
- 互操作性
- 可复用性
- 可组合性
- 可治理性
- 相对牺牲
- 简单性
- 响应性能
- 轻量部署
- 局部演进速度
微服务
新约束
- 交付频率大幅提升
核心矛盾
- 团队要更快迭代,但SOA的重治理与粗粒度服务拖慢了速度
结构抓手 让系统边界、团队边界、发布边界尽量对齐
- 系统围绕相对独立的业务能力拆成多个小服务
- 每个服务由相对独立的团队负责其开发、部署与运维
- 接口协作替代共享实现,数据尽量跟随服务边界自治
通过更小的业务边界与独立部署,把交付链条显著缩短
复杂度并没有消失,而是从代码内部转移到了分布式协作、数据一致性与运维层
-
优先保障
-
可部署性
-
可扩展性
-
可修改性
-
演进速度
-
-
相对牺牲
- 一致性
- 运维简单性
- 故障定位性
- 全局可理解性
事件驱动 / 云原生
新约束
- 系统规模与流量波动持续放大
主要矛盾
- 同步链路过长,扩缩容苦难】人工运维不可持续
结构抓手 事件驱动解决如何协作,云原生解决如何运行
- 事件驱动
- 生产者发布事实,消费者按需订阅并处理
- 消息/流平台承担传递、缓冲、削峰与异步解耦
- 云原生平台承担编排、扩缩容、恢复、配置与观测
通过异步事件与平台化运行能力,让分布式系统更弹性、更韧性、更自动化
让系统更能扛、更会自恢复,但也让时序推理、排障和最终一致性治理更难
- 优先保障
- 弹性
- 韧性
- 可扩展性
- 可用性
- 自动化运维能力
- 相对牺牲
- 可理解性
- 可调试性
- 时序与可预测性
- 强一致性
AI增强
新约束
- 用户开始直接用自然语言工作
主要矛盾
- 传统软件擅长规则与流程,却不擅长开放式语义任务
结构抓手 传统系统继续定义主流程与主数据
- 现有业务系统继续保留主流程与主数据
- 新增模型调用层,负责prompt构造、路由与上下文组织
- RAG、工具调用、审计与评估成为常见新组件
通过旧系统保主流程+AI负责语义增能,实现了低风险接入
先追求能增能、能试点,而不是一开始就追求完全确定、完全自动化
- 优先保障
- 易用性
- 语义适应性
- 知识获取效率
- 功能可扩展性
- 相对牺牲
- 可预测性
- 可测试性
- 成本稳定性
- 安全边界清晰性
AI原生
新约束
- AI不只回答问题,还要完成任务
主要矛盾
- 传统请求-响应式架构无法管理长链路、非确定性与多步协作
结构抓手 模型不再只是外部API,而是系统运行时主体之一
- Agent/编排器负责目标理解、任务规划与执行流程组织
- 工具、知识、状态、记忆层成为模型可调用的运行时组件
- 评测、守护、权限与HTL负责把非确定性纳入治理
通过上下文、工具、状态评测、守护显式工程化,来管理机器认知
AI原生系统为了获得认知式执行能力,必须把评测、守护、权限和HITL(Human-in-the-Loop人机协同闭环)变成一等公民
- 优先保障
- 适应性
- 任务完成能力
- 人机协作效率
- 复杂工作流扩展能力
- 相对牺牲
- 确定性
- 可验证性
- 成本可预测性
- 安全与责任边界清晰度
总结

