软考
在游戏中攻打此考点软件架构风格逐个详讲
管道-过滤器/层次/事件驱动/黑板/解释器/规则/MVC·MVP·MVVM/REST/SOA/微服务/Serverless/EDA/Lambda·Kappa 等 20+ 风格独立详讲(定义+组成+优缺点+适用场景+真题考法),案例第 1 题必考、论文高频
一句话定位
案例第 1 题几乎必考”架构风格选择 + 质量属性识别”,论文 7 个高频方向有 5 个是架构风格——本篇把 20+ 种核心风格每种独立详讲到可写论文段落。
NOTE
本篇是 03-architecture-core.mdx 的”风格独立深化版”。事实据教材第 2 版 §3.7 + 2020-2025 真题核对(2026-07-29)。
IMPORTANT
每种风格 6 要素:① 定义 ② 组成 / 数据流 ③ 优点 ④ 缺点 ⑤ 适用场景 ⑥ 真题考法
A. 数据流大类
A1 批处理序列
| 维度 | 内容 |
|---|---|
| 定义 | 数据批量流动,前处理完一批后再处理下一批 |
| 组成 | 数据源 → 处理单元(按顺序)→ 数据汇 |
| 优点 | 简单、吞吐量大 |
| 缺点 | 延迟大(必须等满一批) |
| 适用 | 离线大量数据 |
| 典型 | 编译器四阶段(词法→语法→语义→代码生成)、ETL |
| 真题 | 2018-05 综合 |
A2 管道-过滤器(必考)
| 维度 | 内容 |
|---|---|
| 定义 | 增量流式:前一过滤器输出 → 后一过滤器输入 |
| 组成 | 过滤器(Filter,独立转换)+ 管道(Pipe,数据流通道) |
| 优点 | 流式、可并行、易复用、易扩展 |
| 缺点 | 难处理交互、难错误恢复、不适合查询 |
| 适用 | 流式数据转换 |
| 典型 | Unix Shell 管道 cat f | grep x | sort;编译器四阶段;ETL |
| 真题 | 2022-11 综合、2018-05 综合 |
WARNING
管道-过滤器 vs 批处理:管道是增量流式(边读边处理),批处理是批量(一批一批)。Unix 管道是管道-过滤器;编译器四阶段既可视为批处理也可视为粗粒度管道。
B. 调用/返回大类
B1 主程序-子程序
| 维度 | 内容 |
|---|---|
| 定义 | 分解为模块,主程序调用子程序 |
| 优点 | 结构清晰 |
| 缺点 | 扩展性差,模块耦合 |
| 适用 | 小型结构化系统 |
| 典型 | 传统 C 程序(main + functions) |
| 真题 | 较少单独考 |
B2 面向对象
| 维度 | 内容 |
|---|---|
| 定义 | 对象封装属性+方法,通过消息交互 |
| 优点 | 封装、复用、易维护、易扩展(多态) |
| 缺点 | 对象间依赖、需标识 |
| 适用 | 大多数现代系统 |
| 典型 | Java/C# 应用 |
| 真题 | 2023-11 论文 ① OO 设计应用 |
B3 层次结构(必考)
| 维度 | 内容 |
|---|---|
| 定义 | 每层只调用相邻下层,下层不知上层存在 |
| 组成 | N 层(每层对上提供服务、对下抽象) |
| 优点 | 支持扩展、复用、可移植;层内独立 |
| 缺点 | 跨层调用破坏分层;性能:每层有开销 |
| 适用 | 网络协议栈、操作系统、企业 N 层应用 |
| 典型 | OSI 七层、OS 内核层、3 层 Web(表现+业务+数据) |
| 真题 | 2021-11、2024-05 综合 |
WARNING
层次结构易错:严格分层(只调相邻下层)vs 非严格分层(可跨层调用)。跨层调用破坏分层优点(可移植性)。
C. 独立构件大类
C1 进程通信
| 维度 | 内容 |
|---|---|
| 定义 | 进程间显式通信,彼此独立 |
| 优点 | 松耦合 |
| 缺点 | 性能开销 |
| 适用 | 分布式系统 |
| 典型 | RPC(远程过程调用)、消息队列 |
| 真题 | 较少单独考 |
C2 事件驱动 / 隐式调用(必考 + 论文高频)
| 维度 | 内容 |
|---|---|
| 定义 | 构件订阅事件,事件触发时被调用;构件不直接调彼此 |
| 组成 | 事件源(发布者)+ 事件总线 / 调度器 + 事件处理器(订阅者) |
| 优点 | 松耦合、易扩展、动态可演化 |
| 缺点 | 控制流难追踪、难确定调用者、性能(事件分发) |
| 适用 | GUI、消息系统、IoT、响应式系统 |
| 典型 | 浏览器事件、MVC(View 订阅 Model)、Node.js EventEmitter、Kafka |
| 真题 | 2019-11、2023-11 综合;2025-05 论文 ① EDA |
IMPORTANT
EDA 论文段落模板(800 字骨架):
- 项目背景(如某电商订单中心)
- 选 EDA 原因:解耦多下游(库存/物流/营销),高扩展性
- 技术实现:Kafka 作为事件总线 + Spring Event / Cloud Stream
- 事件设计:领域事件(OrderCreated, PaymentCompleted)+ 事件版本化
- 关键决策:At-least-once + 幂等消费;事件 Schema Registry
- 效果:解耦 7 个下游、峰值 5 万 TPS、新增下游 0 代码改动
D. 虚拟机大类
D1 解释器(必考填空)
| 维度 | 内容 |
|---|---|
| 定义 | 解释引擎执行被解释的程序 |
| 组成(4 要素) | 被解释程序 + 解释引擎 + 解释引擎当前状态 + 程序当前执行状态 |
| 优点 | 灵活、可移植 |
| 缺点 | 性能低(每条指令需解释) |
| 适用 | 需要灵活定制语言、规则频繁变化 |
| 典型 | JVM、SQL 引擎、Python 解释器、规则引擎 Drools、浏览器 JS 引擎 |
| 真题 | 2025-05 案例 1 题(解释器风格组成图填空) |
IMPORTANT
解释器风格组成图填空套路 callout:必背 4 要素——
- 被解释的程序(要执行的字节码 / DSL)
- 解释引擎(执行解释的核心)
- 解释引擎当前控制状态(指令指针)
- 被解释程序的当前执行状态(变量、栈)
2025-05 案例背景:某 AI 模型平台使用解释器风格执行模型,填空题考上述 4 要素对应位置。
D2 基于规则系统
| 维度 | 内容 |
|---|---|
| 定义 | 规则库 + 规则解释器 + 工作内存 |
| 组成 | 规则库 + 规则解释器(推理引擎) + 工作内存(事实) |
| 优点 | 适合知识推理、规则易修改 |
| 缺点 | 难维护大量规则、性能 |
| 适用 | 专家系统、AI 推理、风控规则、推荐 |
| 典型 | Prolog、Drools、JBoss Rules、风控引擎 |
| 真题 | 2024-05 综合 |
E. 仓库大类
E1 数据库系统
| 维度 | 内容 |
|---|---|
| 定义 | 中央数据 + 独立构件访问 |
| 优点 | 数据集中管理 |
| 缺点 | 中心瓶颈 |
| 适用 | 数据密集型系统 |
| 典型 | 传统 RDBMS 应用 + 客户端 |
E2 黑板系统(必考填空)
| 维度 | 内容 |
|---|---|
| 定义 | 适合不确定性问题的求解 |
| 组成(三要素) | 知识源 KS(Knowledge Source) + 黑板 Blackboard(中央数据)+ 控制器 Controller |
| 优点 | 适合不确定、不完整数据;可扩展知识源 |
| 缺点 | 控制复杂、性能 |
| 适用 | 语音/图像识别、AI、信号处理 |
| 典型 | HEARSAY-II(语音识别)、KLAUS |
| 真题 | 2020-11、2024-11 综合(黑板三要素填空) |
IMPORTANT
黑板三要素记忆 callout:
- 知识源:独立的领域专家模块(如语音/词汇/语法/语义)
- 黑板:中央数据结构,存当前解的部分结果(如词、短语、句子)
- 控制器:决定下一个被激活的知识源(基于黑板的当前状态)
F. 现代派生 - 富客户端
F1 C/S 客户端-服务器
| 维度 | 内容 |
|---|---|
| 优点 | 客户端能力强、响应快 |
| 缺点 | 客户端维护难、跨平台难 |
| 典型 | 桌面 QQ、网银客户端 |
F2 B/S 浏览器-服务器
| 维度 | 内容 |
|---|---|
| 优点 | 零客户端、易部署、跨平台 |
| 缺点 | HTTP 无状态、交互受限、服务器压力大 |
| 典型 | Web 应用 |
F3 N 层架构
表现层(UI) → 业务逻辑层(Service) → 数据访问层(DAO) → 数据库
3 层、4 层(加 Facade)、5 层。
G. 表现层模式(高频论文方向)
G1 MVC(最高频)
| 维度 | 内容 |
|---|---|
| 定义 | Model(数据/业务)+ View(展示)+ Controller(调度) |
| 通信 | View → Controller → Model → View(更新);用 Observer 模式 |
| 优点 | 关注点分离、多 View 共享 Model |
| 缺点 | Controller 易膨胀;View 与 Model 耦合 |
| 典型 | Spring MVC、Django、Rails |
G2 MVP
| 维度 | 内容 |
|---|---|
| 定义 | Model + View + Presenter |
| 通信 | View ↔ Presenter(通过接口);Presenter 更新 View |
| 优点 | View 接口化、易测试 |
| 缺点 | Presenter 易膨胀 |
| 典型 | Android(早期)、WinForms、GWT |
G3 MVVM
| 维度 | 内容 |
|---|---|
| 定义 | Model + View + ViewModel |
| 通信 | ViewModel 与 View 双向数据绑定 |
| 优点 | 自动同步、声明式 |
| 缺点 | 调试难、绑定性能 |
| 典型 | WPF、Vue.js、Knockout |
三者对比
| 维度 | MVC | MVP | MVVM |
|---|---|---|---|
| 耦合 | View 直接访问 Model | View 通过 Presenter | 双向数据绑定 |
| 测试 | 难 | 中 | 易(ViewModel 独立) |
| 代表 | Spring MVC | Android | Vue.js |
IMPORTANT
2025-11 综合 31 题考点:MVP 中 Presenter 处理 View 与 Model 之间的交互。注意区分:MVC 的 Controller 接收用户输入,MVP 的 Presenter 还负责更新 View,MVVM 的 ViewModel 通过数据绑定。
H. 服务化架构
H1 SOA 面向服务
| 维度 | 内容 |
|---|---|
| 定义 | 服务契约 + 松耦合 + 可重用 + 业务对齐 |
| 特点 | 通过 ESB(企业服务总线)集成;粗粒度;协议:SOAP/WebService |
| 优点 | 集成遗留系统、跨厂商 |
| 缺点 | ESB 重量级、性能、治理复杂 |
| 典型 | Web Service + ESB(如 IBM/Oracle 中间件) |
| 真题 | 2021-05、2023-11 综合 |
H2 REST
| 维度 | 内容 |
|---|---|
| 定义 | 表述性状态转移(Representational State Transfer) |
| 6 约束 | 客户端-服务器 / 无状态 / 可缓存 / 统一接口 / 分层系统 / 按需代码(可选) |
| 特点 | 资源(URI)+ HTTP 方法(GET/POST/PUT/DELETE) |
| 优点 | 简单、轻量、可扩展 |
| 典型 | HTTP API |
SOA vs REST vs 微服务对比(必考)
| 维度 | SOA | REST | 微服务 |
|---|---|---|---|
| 通信 | SOAP/ESB(重量级) | HTTP/JSON | 多协议(HTTP/gRPC/MQ) |
| 粒度 | 粗 | 灵活 | 细(业务能力) |
| 治理 | ESB 集中 | 无 | 去中心化 |
| 数据 | 共享 DB | 灵活 | 每服务独立 DB |
| 部署 | 集中(EAR/WAR) | 灵活 | 独立部署 |
| 典型 | Web Service | HTTP API | Spring Cloud |
I. 微服务(论文最高频)
I1 微服务定义
- 小而自治
- 围绕业务能力
- 独立部署、独立技术栈、独立 DB
- 用轻量级协议(HTTP/REST、gRPC、消息)通信
I2 拆分原则(DDD)
| 原则 | 说明 |
|---|---|
| 单一职责 | 每服务一个业务能力 |
| 限界上下文 Bounded Context | 领域驱动设计核心;明确边界 |
| 子域 Subdomain | 核心 / 支持 / 通用 |
| 上下文映射 Context Mapping | 多上下文关系(合作/共享内核/客户-供应商) |
I3 关键技术组件
| 组件 | 选项 |
|---|---|
| 服务注册发现 | Eureka(AP) / Nacos(AP/CP) / Consul(CP) / ZooKeeper(CP) |
| API 网关 | Spring Cloud Gateway / Kong / Nginx |
| 配置中心 | Apollo / Nacos / Spring Cloud Config |
| 熔断降级 | Hystrix / Sentinel / Resilience4j |
| 负载均衡 | Ribbon / Spring Cloud LoadBalancer |
| 服务调用 | OpenFeign / gRPC |
| 链路追踪 | SkyWalking / Zipkin / Jaeger |
| 消息队列 | Kafka / RocketMQ / RabbitMQ |
I4 优缺点(论文素材)
| 优点 | 缺点 |
|---|---|
| 独立部署,迭代快 | 分布式复杂度高 |
| 技术栈灵活 | 运维成本高(多服务) |
| 故障隔离 | 数据一致性难(分布式事务) |
| 弹性伸缩 | 测试/调试难 |
| 团队自治 | 网络延迟累积 |
I5 真题考法
- 2024-11 论文 ① 多源数据集成
- 2025-05 案例:微服务拆分原则
- 2025-11 综合:网关/注册中心选型
IMPORTANT
微服务论文 1500 字骨架:
- 背景:某单体系统痛点(部署慢、技术栈耦合、扩展性差)
- 选型:为什么用微服务(业务边界清晰、团队 10+、需独立扩展)
- 拆分:DDD 限界上下文,拆出 N 个服务(用户/订单/支付/库存…)
- 治理:注册中心 Nacos + 网关 + Sentinel 熔断 + 链路追踪 SkyWalking
- 数据:每服务独立 DB;跨服务用 Saga + 本地消息表
- 收益与挑战:上线频率从月→天;引入运维 DevOps 与链路追踪解决复杂度
详见 微服务分布式深化。
J. Serverless 无服务器(2025-11 论文真题)
J1 核心概念
- FaaS(Function as a Service):AWS Lambda / 阿里云 FC / Azure Functions
- BaaS(Backend as a Service):Firebase / 阿里云 BaaS(DB / 存储 / 认证)
J2 核心特征
| 特征 | 说明 |
|---|---|
| 事件驱动 | HTTP / 消息 / 定时 / 对象存储事件触发函数 |
| 自动弹性 | 0 到 N 实例,按需伸缩 |
| 按量计费 | 按执行次数 + 时长 + 内存(vs 服务器按时间) |
| 无运维 | 无需管理服务器、OS、运行时 |
| 状态外置 | 函数无状态,状态存 Redis / DB |
J3 优缺点
| 优点 | 缺点 |
|---|---|
| 零运维 | 冷启动延迟(首次 100ms-数秒) |
| 自动弹性 | 状态管理难 |
| 按量付费(成本省) | 厂商锁定(API 各家不同) |
| 快速上线 | 长任务不友好(执行时间上限) |
| 故障隔离 | 调试难 |
J4 适用 vs 不适用
| 适用 | 不适用 |
|---|---|
| 事件驱动(Webhook / IoT) | 长连接(WebSocket) |
| 定时任务(Cron) | 大文件持续处理 |
| 突发流量(秒杀 / 数据 ETL) | 极致低延迟(< 100ms) |
| 数据转换(图片处理) | 强状态服务(聊天) |
J5 真题考法
- 2025-11 论文 ②:论无服务器架构(Serverless)及其应用
IMPORTANT
Serverless 论文骨架:
- 背景:某小程序后端,请求量低、波动大(白天高峰、夜间几乎无)
- 选 Serverless 原因:避免低利用率服务器、按量付费降低成本
- 实现:阿里云函数计算 + API 网关 + Tablestore + OSS
- 函数设计:业务功能原子化(如生成订单 / 发送短信 / 图片压缩)
- 冷启动优化:预留实例 / 缩小函数包 / 选择 Node.js 启动快
- 收益:成本下降 70%、上线从天到小时;挑战:调试与端到端追踪
K. 事件驱动架构 EDA(2025-05 论文真题)
详见 §C2 事件驱动与 微服务分布式深化 §(Kafka 部分)。
L. Lambda 与 Kappa 架构
L1 Lambda 三层
└─→ 服务层(合并查询)←─┐
┌─→ 批处理层(Hadoop MapReduce)→ 批视图
源数据 ├─→ 查询
└─→ 速度层(Storm/Spark Streaming)→ 实时视图
| 层 | 作用 | 技术 |
|---|---|---|
| 批处理层 Batch Layer | 全量数据计算(高延迟高精度) | Hadoop MapReduce / Spark |
| 速度层 Speed Layer | 实时增量计算(低延迟近似) | Storm / Spark Streaming / Flink |
| 服务层 Serving Layer | 合并批 + 速视图 | HBase / Druid / Cassandra |
缺点:维护两套代码(批 + 流)。
L2 Kappa 架构
源数据 → 流处理(Kafka + Flink/Spark Streaming)→ 视图 → 查询
核心思想:用流处理统一批与流(批 = 流的重放)。
L3 湖仓一体 Lakehouse
数据湖的灵活性 + 数据仓库的 ACID / Schema / 事务管理。
代表:Delta Lake / Apache Iceberg / Apache Hudi。
L4 真题考法
- 2024-05 论文 ① Lambda
- 2025-11 综合湖仓一体
- 2025-11 论文 ④ 云原生数据库
M. DSSA 与 SPL
M1 DSSA 特定领域软件架构
| 维度 | 内容 |
|---|---|
| 定义 | 在特定应用领域内,为一族应用提供组织结构参考的标准架构 |
| 三层次 | 领域开发环境(构建参考架构)+ 应用开发环境(基于参考架构开发具体应用)+ 领域执行环境(运行) |
| 活动 | 领域分析(建领域模型)→ 领域设计(建参考架构)→ 领域实现(构件库) |
| 要素 | 参考需求 + 参考架构 + DSSA 库 |
| 典型 | 航电领域、银行核心系统模板 |
| 真题 | 2022-05 综合 |
M2 SPL 软件产品线
| 维度 | 内容 |
|---|---|
| 定义 | 一族共享公共受控特征的产品,满足特定领域需求 |
| 组成 | 核心资产库(架构 / 构件 / 文档)+ 产品集 |
| 过程 | 领域工程(建资产库)+ 应用工程(生成产品) |
| 优点 | 复用率高、上市快、质量高 |
| 典型 | 华为手机系列、汽车平台 |
| 真题 | 2023-11 综合 |
N. 反查表
| 风格 | 大类 | 关键优点 | 关键缺点 | 真题 |
|---|---|---|---|---|
| 批处理 | 数据流 | 吞吐量 | 延迟 | 2018-05 |
| 管道-过滤器 | 数据流 | 流式可并行 | 难交互 | 2018-05, 2022-11 |
| 层次 | 调用/返回 | 可移植 | 跨层破坏 | 2021-11, 2024-05 |
| 面向对象 | 调用/返回 | 封装复用 | 依赖 | 2023-11 |
| 事件驱动 | 独立构件 | 松耦合 | 控制流难 | 2019-11, 2025-05 论文 |
| 解释器 | 虚拟机 | 灵活 | 性能低 | 2025-05 案例 |
| 规则系统 | 虚拟机 | 知识推理 | 规则难管 | 2024-05 |
| 黑板 | 仓库 | 不确定问题 | 控制复杂 | 2020-11, 2024-11 |
| 数据库系统 | 仓库 | 数据集中 | 中心瓶颈 | 较少 |
| MVC | 派生 | 关注点分离 | Controller 膨胀 | 2025-11 综合 31 |
| MVP | 派生 | 易测试 | Presenter 膨胀 | 2025-11 综合 31 |
| MVVM | 派生 | 双向绑定 | 调试难 | 综合 |
| SOA | 服务化 | 跨厂商集成 | ESB 重 | 2021-05, 2023-11 |
| REST | 服务化 | 简单轻量 | 无状态约束 | 综合 |
| 微服务 | 服务化 | 独立部署 | 分布式复杂 | 2024-11 论文 |
| Serverless | 服务化 | 零运维弹性 | 冷启动 | 2025-11 论文 |
| EDA | 独立构件 | 异步解耦 | 难追踪 | 2025-05 论文 |
| Lambda | 数据架构 | 批+流兼顾 | 双套代码 | 2024-05 论文 |
| Kappa | 数据架构 | 简化统一 | 流处理依赖 | 综合 |
| DSSA | 复用 | 领域复用 | 投入大 | 2022-05 |
| SPL | 复用 | 产品族复用 | 演化难 | 2023-11 |
记忆口诀 / 易错点汇总
- 五大架构风格大类:数据流 / 调用-返回 / 独立构件 / 虚拟机 / 仓库
- 黑板三要素:知识源 + 黑板 + 控制器
- 解释器四要素:被解释程序 + 解释引擎 + 引擎状态 + 程序状态
- MVC vs MVP vs MVVM:Controller 调度 / Presenter 更新 View / ViewModel 双向绑定
- SOA vs 微服务:ESB 重量级 / 独立部署细粒度
- Serverless 冷启动:首次调用慢,是论文必答缺点
TIP
避坑建议:
- 解释器 vs 规则系统:解释器执行代码;规则系统执行业务规则
- 管道-过滤器 vs 批处理:增量 vs 批量
- 不要把 MVC 说成”分层架构”——它是表现层模式
- Serverless 论文必须答冷启动 + 厂商锁定两大缺点
交叉引用
本系列笔记
- 架构核心速查表:5 大类对比表
- 质量属性与评估:风格与质量属性关联
- 微服务分布式深化:微服务全栈
- 云原生大数据AI深化:Serverless / Lambda
- 论文素材库:风格类论文段落
主计划文档
详见 主计划 §3.7.1 架构风格 的对应内容。
外部延伸
- 官方教材:《系统架构设计师教程(第 2 版)》§3.7
- 经典著作:Mary Shaw《Software Architecture: Perspectives on an Emerging Discipline》
- 真题练习:2020-2025 综合+案例+论文
自测题
- 概念:黑板系统的三要素是什么?
- 填空:解释器风格的 4 要素是什么?(2025-05 案例)
- 对比:SOA、REST、微服务三者区别?
- 案例:某 AI 推理平台频繁修改规则,应选哪种架构?为什么?
- 论文:Serverless 适合的场景与不适合的场景?
- 决策:某秒杀系统瞬时流量 100 倍,应选哪种架构组合?
IMPORTANT
如果只能”看着面熟”但说不出来,说明还没真正掌握,建议回看对应章节并多做真题。
下一篇导引:质量属性与评估深化 将讲述六类质量属性场景实例、效用树构建、ATAM 9 步详操作,案例第 1 题必考内容。