软件架构模式

绪论

架构选择的本质,是在特定时代约束下,对质量属性做“有意识的优先级排序”

最早期软件开发

主要矛盾

  • 计算资源极其稀缺,但任务正从“算一次”走向“重复算、稳定算、规模算”

结构抓手 先把重复任务写进程序,再把执行秩序写进流程

  • 程序与数据组成作业,统一送入系统执行
  • 执行围绕批处理与调度组织,强调吞吐和稳定
  • 交互极弱,输出通常在作业完成后统一返回

主机 / 终端

新约束

  • 企业事务数字化

主要矛盾

  • 越来越多用户需要共享同一套核心数据与事务能力

系统从执行任务转向服务一群用户

结构抓手 通过强中心+弱终端换取一致性、安全性与治理能力

  • 主机承担几乎全部事务处理,数据存储与权限控制
  • 终端主要负责输入、显示,不承担复杂业务逻辑
  • 安全、审计和一致性都被集中到中心系统

通过事务中心化,把多人共享从混乱访问变成可治理的制度化系统

  • 优先保障
    • 一致性
    • 安全性
    • 可靠性
    • 可审计性
  • 相对牺牲
    • 易用性
    • 交互响应性
    • 局部可修改性

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人机协同闭环)变成一等公民

  • 优先保障
    • 适应性
    • 任务完成能力
    • 人机协作效率
    • 复杂工作流扩展能力
  • 相对牺牲
    • 确定性
    • 可验证性
    • 成本可预测性
    • 安全与责任边界清晰度

总结

截屏2026-05-31 00.41.57

截屏2026-05-31 00.42.24