返回知识库

软考

在游戏中攻打此考点

软件架构风格逐个详讲

管道-过滤器/层次/事件驱动/黑板/解释器/规则/MVC·MVP·MVVM/REST/SOA/微服务/Serverless/EDA/Lambda·Kappa 等 20+ 风格独立详讲(定义+组成+优缺点+适用场景+真题考法),案例第 1 题必考、论文高频

软考架构风格案例分析论文真题微服务ServerlessMVC

一句话定位

案例第 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 综合
图 A2:管道-过滤器架构(来源:教材第 2 版 §3.7.1)

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 综合
图 B3:层次结构(OSI 七层示意)

WARNING

层次结构易错:严格分层(只调相邻下层)vs 非严格分层(可跨层调用)。跨层调用破坏分层优点(可移植性)。

C. 独立构件大类

C1 进程通信

维度内容
定义进程间显式通信,彼此独立
优点松耦合
缺点性能开销
适用分布式系统
典型RPC(远程过程调用)、消息队列
真题较少单独考

C2 事件驱动 / 隐式调用(必考 + 论文高频)

维度内容
定义构件订阅事件,事件触发时被调用;构件不直接调彼此
组成事件源(发布者)+ 事件总线 / 调度器 + 事件处理器(订阅者)
优点松耦合、易扩展、动态可演化
缺点控制流难追踪、难确定调用者、性能(事件分发)
适用GUI、消息系统、IoT、响应式系统
典型浏览器事件、MVC(View 订阅 Model)、Node.js EventEmitter、Kafka
真题2019-11、2023-11 综合;2025-05 论文 ① EDA
图 C2:事件驱动 / 隐式调用

IMPORTANT

EDA 论文段落模板(800 字骨架)

  1. 项目背景(如某电商订单中心)
  2. 选 EDA 原因:解耦多下游(库存/物流/营销),高扩展性
  3. 技术实现:Kafka 作为事件总线 + Spring Event / Cloud Stream
  4. 事件设计:领域事件(OrderCreated, PaymentCompleted)+ 事件版本化
  5. 关键决策:At-least-once + 幂等消费;事件 Schema Registry
  6. 效果:解耦 7 个下游、峰值 5 万 TPS、新增下游 0 代码改动

D. 虚拟机大类

D1 解释器(必考填空)

维度内容
定义解释引擎执行被解释的程序
组成(4 要素)被解释程序 + 解释引擎 + 解释引擎当前状态 + 程序当前执行状态
优点灵活、可移植
缺点性能低(每条指令需解释)
适用需要灵活定制语言、规则频繁变化
典型JVM、SQL 引擎、Python 解释器、规则引擎 Drools、浏览器 JS 引擎
真题2025-05 案例 1 题(解释器风格组成图填空)

IMPORTANT

解释器风格组成图填空套路 callout:必背 4 要素——

  1. 被解释的程序(要执行的字节码 / DSL)
  2. 解释引擎(执行解释的核心)
  3. 解释引擎当前控制状态(指令指针)
  4. 被解释程序的当前执行状态(变量、栈)

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

三者对比

维度MVCMVPMVVM
耦合View 直接访问 ModelView 通过 Presenter双向数据绑定
测试易(ViewModel 独立)
代表Spring MVCAndroidVue.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 微服务对比(必考)

维度SOAREST微服务
通信SOAP/ESB(重量级)HTTP/JSON多协议(HTTP/gRPC/MQ)
粒度灵活细(业务能力)
治理ESB 集中去中心化
数据共享 DB灵活每服务独立 DB
部署集中(EAR/WAR)灵活独立部署
典型Web ServiceHTTP APISpring 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 字骨架

  1. 背景:某单体系统痛点(部署慢、技术栈耦合、扩展性差)
  2. 选型:为什么用微服务(业务边界清晰、团队 10+、需独立扩展)
  3. 拆分:DDD 限界上下文,拆出 N 个服务(用户/订单/支付/库存…)
  4. 治理:注册中心 Nacos + 网关 + Sentinel 熔断 + 链路追踪 SkyWalking
  5. 数据:每服务独立 DB;跨服务用 Saga + 本地消息表
  6. 收益与挑战:上线频率从月→天;引入运维 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 论文骨架

  1. 背景:某小程序后端,请求量低、波动大(白天高峰、夜间几乎无)
  2. 选 Serverless 原因:避免低利用率服务器、按量付费降低成本
  3. 实现:阿里云函数计算 + API 网关 + Tablestore + OSS
  4. 函数设计:业务功能原子化(如生成订单 / 发送短信 / 图片压缩)
  5. 冷启动优化:预留实例 / 缩小函数包 / 选择 Node.js 启动快
  6. 收益:成本下降 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

记忆口诀 / 易错点汇总

  1. 五大架构风格大类:数据流 / 调用-返回 / 独立构件 / 虚拟机 / 仓库
  2. 黑板三要素:知识源 + 黑板 + 控制器
  3. 解释器四要素:被解释程序 + 解释引擎 + 引擎状态 + 程序状态
  4. MVC vs MVP vs MVVM:Controller 调度 / Presenter 更新 View / ViewModel 双向绑定
  5. SOA vs 微服务:ESB 重量级 / 独立部署细粒度
  6. Serverless 冷启动:首次调用慢,是论文必答缺点

TIP

避坑建议

  • 解释器 vs 规则系统:解释器执行代码;规则系统执行业务规则
  • 管道-过滤器 vs 批处理:增量 vs 批量
  • 不要把 MVC 说成”分层架构”——它是表现层模式
  • Serverless 论文必须答冷启动 + 厂商锁定两大缺点

交叉引用

本系列笔记

主计划文档

详见 主计划 §3.7.1 架构风格 的对应内容。

外部延伸

  • 官方教材:《系统架构设计师教程(第 2 版)》§3.7
  • 经典著作:Mary Shaw《Software Architecture: Perspectives on an Emerging Discipline》
  • 真题练习:2020-2025 综合+案例+论文

自测题

  1. 概念:黑板系统的三要素是什么?
  2. 填空:解释器风格的 4 要素是什么?(2025-05 案例)
  3. 对比:SOA、REST、微服务三者区别?
  4. 案例:某 AI 推理平台频繁修改规则,应选哪种架构?为什么?
  5. 论文:Serverless 适合的场景与不适合的场景?
  6. 决策:某秒杀系统瞬时流量 100 倍,应选哪种架构组合?

IMPORTANT

如果只能”看着面熟”但说不出来,说明还没真正掌握,建议回看对应章节并多做真题。


下一篇导引质量属性与评估深化 将讲述六类质量属性场景实例、效用树构建、ATAM 9 步详操作,案例第 1 题必考内容。