软考系统架构师 · 全册考点精讲与真题实战 第 7 章 系统架构设计

四季读书网 4 0
软考系统架构师 · 全册考点精讲与真题实战 第 7 章 系统架构设计

所属篇章:上篇·综合知识
预估分值:8~12 分(核心高分章节
考查重点:架构风格、架构描述语言(ADL)、基于架构的开发(ABSD)、中间件
难度等级:★★★★★(综合知识和案例分析均高频出题)


一、本章知识图谱

系统架构设计
├── 7.1 软件架构概述
│   ├── 架构的概念与作用
│   └── 架构的层次
├── 7.2 架构风格(重点)
│   ├── 五大类架构风格
│   └── 各风格对比
├── 7.3 特定领域软件架构(DSSA)
├── 7.4 架构描述语言(ADL)
├── 7.5 基于架构的软件开发(ABSD)
├── 7.6 中间件技术
└── 7.7 Web 架构与微服务架构

二、核心考点详解

考点 1:软件架构的概念与层次

1.1 架构在软件开发中的位置

需求分析
  ↓
【软件架构设计】  ← 本章核心
  ↓
详细设计
  ↓
编码实现
  ↓
测试与维护

1.2 架构设计的输入与输出

输入
输出
功能需求
架构设计文档
非功能需求(质量属性)
架构视图(4+1 视图)
设计约束
技术选型方案
可用资源
风险清单

1.3 4+1 视图模型(Philippe Kruchten)

视图
关注点
利益相关者
逻辑视图
功能需求,类和对象
终端用户
开发视图
代码组织,模块划分
开发人员
进程视图
并发、同步、性能
系统集成人员
物理视图
部署拓扑,硬件映射
系统工程师
场景视图(+1)
用例驱动,验证其他四个视图
所有利益相关者

高频考点:4+1 视图是架构描述的标准框架,场景视图起到统一和验证的作用。

考点 2:架构风格(最核心考点)

2.1 数据流风格

风格
特点
优点
缺点
典型应用
批处理
整体输入,整体输出
简单直接
无交互性
ETL 处理、编译器
管道-过滤器
数据流经一系列处理步骤
组件可复用、易并行
不适合交互系统
Unix 管道、编译器、日志处理

管道-过滤器的关键特征

  • 每个过滤器独立运行,不共享状态
  • 过滤器不关心输入输出的来源和去向
  • 数据格式需要统一约定

2.2 调用/返回风格

风格
特点
优点
典型应用
主程序/子程序
层次化调用关系
结构清晰
传统过程式程序
面向对象
对象间方法调用
封装、继承、多态
大部分现代应用
层次式架构
按层组织,只能调用下一层
关注点分离
OSI 七层模型、TCP/IP

层次式架构关键要点

  • 严格层次
    每层只能调用相邻下层
  • 松散层次
    允许跨层调用(降低灵活性但提高效率)
  • 优点:低耦合、易替换、易测试
  • 缺点:性能开销(层层传递)、不易确定层次边界

2.3 独立组件风格

风格
特点
优点
典型应用
进程通信
独立进程间消息传递
松耦合
RPC、消息队列
事件驱动(隐式调用)
通过事件注册和触发通信
高度解耦
GUI 事件、发布-订阅

事件驱动架构关键特征

  • 组件通过注册-发布-通知机制交互
  • 发布者不知道谁在监听(匿名通信)
  • 监听者不知道谁发布的事件
  • 适合松耦合可扩展系统

2.4 虚拟机风格

风格
特点
典型应用
解释器
自定义语言的运行时解释执行
脚本引擎、规则引擎
规则系统
基于规则库的推理
专家系统、业务规则引擎

2.5 仓库风格

风格
特点
典型应用
数据库系统
以共享数据存储为中心
企业信息系统
黑板系统
多个专家协作求解,共享知识库
语音识别、信号处理
超文本系统
网状链接的信息空间
Web、Wiki

黑板系统关键组成

  1. 知识源(KS)
    独立的专家模块
  2. 黑板
    全局共享数据结构
  3. 控制器
    协调知识源的活动

考点 3:架构风格对比(案例分析高频出题)

对比维度
管道-过滤器
事件驱动
层次式
仓库式
耦合度
很低
可复用性
性能
可扩展性
很高
适合场景
数据处理
异步交互
分层管理
数据密集

考点 4:特定领域软件架构(DSSA)

DSSA 是针对特定应用领域的一套架构和组织结构。

三个基本活动

  1. 领域分析
    识别领域中的共性和变化性
  2. 领域设计
    创建领域特定的架构
  3. 领域实现
    开发和复用组件

关键概念

  • 领域模型
    描述领域中实体和关系
  • 参考需求
    领域中的典型需求
  • 参考架构
    满足参考需求的架构方案

考点 5:架构描述语言(ADL)

ADL 是用于描述软件架构的形式化语言。

ADL
特点
Wright
基于 CSP,关注组件间交互
Rapide
关注事件和约束
UniCon
关注组件和连接件属性
Acme
架构互换语言,元模型
xADL
基于 XML 的 ADL

ADL 的基本元素

  • 组件(Component)
    计算和存储单元
  • 连接件(Connector)
    组件间交互的媒介
  • 约束(Constraint)
    组件和连接件组合的规则

考点 6:基于架构的软件开发(ABSD)

ABSD 强调以架构为中心驱动整个开发过程。

ABSD 三大基础

  1. 功能分解
    将系统分解为功能模块
  2. 选择架构风格
    根据需求选择合适的架构风格
  3. 软件模板
    使用模板指导开发

ABSD 过程

  1. 架构需求 → 2. 架构设计 → 3. 架构文档化 → 4. 架构评审 → 5. 架构实现 → 6. 架构演化

考点 7:Web 架构与微服务

7.1 Web 架构演进

单体架构 → 垂直架构 → SOA → 微服务 → Serverless

7.2 微服务架构特征

特征
说明
服务粒度小
每个服务围绕一个业务能力
独立部署
每个服务可独立构建和部署
去中心化
每个服务有自己的数据库
容错设计
熔断、降级、限流
轻量级通信
REST、gRPC
自动化
CI/CD、自动化测试

7.3 微服务的挑战

  • 分布式系统的复杂性(网络延迟、一致性)
  • 服务间通信和协调
  • 分布式事务(Saga 模式)
  • 运维复杂度(需要容器化、编排)
  • 数据一致性(最终一致性)

7.4 微服务 vs SOA

对比维度
微服务
SOA
粒度
细粒度
粗粒度
通信
轻量级(REST)
重量级(ESB)
数据库
每个服务独立
共享数据库
治理
去中心化
集中式
目标
敏捷、持续交付
企业级集成

三、历年真题解析

【真题 2020 年·案例分析】

题目:某在线视频处理系统需要将原始视频经过"转码→剪辑→加字幕→渲染"四个步骤处理。请分析该系统适合采用哪种架构风格,并说明理由。

参考答案

该系统适合采用管道-过滤器(Pipe-Filter)架构风格

理由分析:

  1. 数据流特征明确
    视频数据按照固定流程经过多个处理步骤,属于典型的线性数据流处理场景
  2. 各步骤独立
    转码、剪辑、加字幕、渲染四个步骤各自独立,不需要共享状态
  3. 组件可复用
    每个处理步骤可以作为独立的过滤器,可在其他流程中复用
  4. 易于并行
    不同视频文件可以同时流经管道,实现并行处理
  5. 易于扩展
    未来如需增加新的处理步骤(如压缩),只需添加新的过滤器即可

【真题 2022 年·综合知识】

题目:以下关于事件驱动架构的叙述中,不正确的是(  )。

A. 组件之间通过事件的发布和订阅进行通信
B. 事件的发布者需要知道所有订阅者的身份
C. 事件驱动架构有利于实现松耦合
D. 事件驱动架构适合构建可扩展的系统

答案:B

解析:事件驱动架构的核心优势是匿名通信——发布者不需要知道谁在监听,监听者也不需要知道谁发布了事件。这种匿名性是实现松耦合的关键。

【真题 2023 年·综合知识】

题目:在 4+1 视图模型中,用于验证其他四个视图一致性的是(  )。

A. 逻辑视图
B. 进程视图
C. 物理视图
D. 场景视图

答案:D

解析:场景视图(也称用例视图)是"+1"视图,通过具体的用例场景来验证逻辑视图、开发视图、进程视图和物理视图之间的一致性和完整性。

考点 8:架构描述语言(ADL)详解

ADL 的核心元素

元素
说明
示例
组件
计算/存储单元
客户端、服务器、数据库
连接件
组件间交互机制
过程调用、事件、消息
架构配置
组件和连接件的拓扑关系
层次结构、管道连接
约束
架构合法性规则
组件兼容性、连接规则

常见 ADL 对比

ADL
关注点
特色
Wright
组件交互行为
基于 CSP 形式化
Rapide
事件驱动系统
事件模式和约束
Acme
架构互换
元模型,可转换其他 ADL
xADL
XML 集成
可扩展、工具支持
AADL
嵌入式系统
实时性能分析

考点 9:特定领域软件架构(DSSA)详解

DSSA 的三个基本活动

活动
输入
输出
领域分析
领域中的系统样本
领域模型、共性/变化性
领域设计
领域模型
参考架构(DSSA)
领域实现
参考架构
可复用组件库

DSSA 的关键概念

  • 领域边界
    确定哪些系统属于同一领域
  • 共性
    领域内所有系统都有的特征
  • 变化性
    领域内系统间的差异点
  • 参考架构
    体现共性和变化性的架构方案

三、补充历年真题解析

【真题 2019 年·案例分析】

题目:某语音识别系统需要多个专家模块协作工作,每个专家模块可以独立工作,通过共享的知识库交换信息。请分析该系统适合采用的架构风格。

参考答案

该系统适合采用黑板系统架构风格(属于仓库风格)。

理由分析:

  1. 多专家协作
    语音识别是典型的不确定问题,需要多个专家模块(如声学专家、语言专家、语义专家)协作求解
  2. 共享知识库
    各专家模块通过黑板(共享知识库)交换信息,而不是直接通信
  3. 控制器协调
    控制器根据黑板状态激活相应的知识源
  4. 知识源独立
    每个专家模块可以独立工作,松耦合

黑板系统组成:

  • 知识源(KS):声学分析、词汇识别、语法分析、语义理解等独立专家模块
  • 黑板:全局共享数据结构,存储中间结果
  • 控制器:根据黑板状态变化激活相应的知识源

【真题 2021 年·综合知识】

题目:在 ABSD(基于架构的软件开发)方法中,架构需求阶段的主要活动不包括(  )。

A. 需求获取  B. 标识构件  C. 架构评审  D. 生成类图

答案:C

解析:架构评审是 ABSD 的独立阶段,不属于架构需求阶段。ABSD 架构需求阶段包括需求获取、标识构件、生成类图等。ABSD 的完整过程是:架构需求→架构设计→架构文档化→架构评审→架构实现→架构演化。

【真题 2022 年·综合知识】

题目:某实时监控系统需要持续接收传感器数据并进行实时分析处理。该系统最适合采用(  )架构风格。

A. 层次式  B. 仓库式  C. 管道-过滤器  D. 事件驱动

答案:D

解析:实时监控系统需要持续接收数据并实时响应,事件驱动架构能够通过事件触发机制实现实时响应,且具有松耦合、可扩展的特点。管道-过滤器更适合批处理数据流。

【真题 2023 年·综合知识】

题目:以下关于微服务架构与 SOA 架构的对比中,正确的是(  )。

A. 微服务通常使用 ESB 进行服务通信
B. SOA 的服务粒度通常比微服务更细
C. 微服务倡导每个服务拥有独立的数据库
D. SOA 强调去中心化的治理

答案:C

解析:微服务的核心原则之一是每个服务拥有独立的数据库(去中心化数据管理)。微服务不使用 ESB(A 错),SOA 粒度更粗(B 错),SOA 强调集中式治理(D 错)。

考点 10:软件架构与生命周期

架构设计在生命周期中的位置

需求分析 → 架构设计 → 详细设计 → 实现 → 测试 → 部署 → 运维 → 演化
  • 架构设计早期介入,贯穿整个生命周期
  • 架构决策在早期做出,影响整个项目
  • 架构需要在运维和演化阶段持续验证

考点 11:软件架构复用

复用的分类

复用类型
说明
示例
产品复用
复用已有的软件产品
使用开源框架
过程复用
复用开发过程中的经验
架构模板、设计模式

复用粒度

  • 代码复用:函数、类、组件
  • 设计复用:架构风格、设计模式
  • 分析复用:需求模型、领域模型

架构复用过程

  1. 构造/获取可复用资产(组件、模式、框架)
  2. 管理可复用资产(分类、存储、检索)
  3. 使用可复用资产(检索、适配、组装)

复用障碍

  • “非我所创”综合征(NIH)
  • 复用成本(查找、理解、适配)
  • 知识产权和许可证问题

三、补充历年真题解析

真题 2020 年·综合知识

题目:以下关于软件架构复用的叙述中,正确的是(  )。

A. 架构复用只包括代码级别的复用
B. 设计模式属于过程复用
C. 复用不会带来任何成本
D. 框架是一种粗粒度的复用方式

答案:D

解析:框架提供了一种应用骨架,开发者在框架基础上进行定制开发,属于粗粒度的架构复用。架构复用不仅包括代码(A 错),设计模式是过程复用的一种形式(B 正确但不如 D 明确),复用有查找/理解/适配等成本(C 错)。

真题 2022 年·综合知识

题目:在 ABSD 方法中,体系结构复审的主要目的是(  )。

A. 确定体系结构是否满足需求
B. 编写详细设计文档
C. 进行代码审查
D. 制定测试计划

答案:A

解析:体系结构复审是在架构设计完成后进行的评估活动,主要目的是确认架构设计是否满足需求,识别潜在风险。可以使用 ATAM、SAAM 等方法。

真题 2019 年·综合知识

题目:在 4+1 视图模型中,关注软件模块的组织和打包的是(  )。

A. 逻辑视图  B. 开发视图  C. 进程视图  D. 物理视图

答案:B

解析:开发视图(也称实现视图)关注软件模块的组织和打包,面向开发人员。逻辑视图关注功能需求(面向用户),进程视图关注并发(面向系统集成人员),物理视图关注部署(面向运维人员)。

真题 2021 年·综合知识

题目:以下关于 ABSD(基于架构的软件开发)的叙述中,不正确的是(  )。

A. ABSD 以架构为中心驱动开发
B. ABSD 包括架构需求、设计、文档化、复审、实现和演化
C. ABSD 的架构需求来自于功能需求和质量属性
D. ABSD 只适用于大型系统

答案:D

解析:ABSD 适用于各种规模的系统,不仅限于大型系统。ABSD 以架构为中心(A 正确),包含完整开发流程(B 正确),架构需求来自功能和质量属性(C 正确)。

真题 2022 年·综合知识

题目:在架构风格中,以下属于虚拟机风格的是(  )。

A. 解释器  B. 管道-过滤器  C. 主程序/子程序  D. 黑板系统

答案:A

解析:虚拟机风格包括解释器和规则系统。解释器为特定问题创建自定义的执行环境,规则系统基于规则库进行推理。管道-过滤器属于数据流风格(B 错),主程序/子程序属于调用/返回风格(C 错),黑板系统属于仓库风格(D 错)。

真题 2023 年·综合知识

题目:以下关于软件架构复用的叙述中,正确的是(  )。

A. 复用只能发生在代码级别
B. 框架是一种细粒度的复用方式
C. 设计模式属于过程复用
D. 复用总是能降低开发成本

答案:C

解析:设计模式属于过程复用(复用开发经验和方案)。复用不仅限于代码(A 错),框架是粗粒度复用(B 错),复用有查找/适配成本,不一定总能降低成本(D 错)。

真题 2021 年·案例分析

题目:某编译器系统需要将源代码翻译为目标代码。请分析该系统适合采用的架构风格及其理由。

参考答案

该系统适合采用管道-过滤器架构风格(数据流风格)。

理由:

  1. 编译过程是线性处理流程:词法分析→语法分析→语义分析→中间代码→代码优化→目标代码
  2. 每个处理步骤可以作为独立的过滤器
  3. 过滤器之间通过管道传递数据,松耦合
  4. 可以灵活重组过滤器(如增加代码优化阶段)
  5. 支持并行执行独立的过滤器

三、补充考点

考点 11:架构设计原则

原则
说明
关注点分离
每个模块只负责一个关注点
单一职责
每个组件只有一种变更原因
接口隔离
客户端不应依赖不需要的接口
依赖倒置
高层模块不依赖低层实现,依赖抽象
开闭原则
对扩展开放,对修改关闭

考点 12:架构决策方法

方法
说明
ATAM
评估质量属性权衡
CBAM
成本效益分析,架构投资决策
轻量级 ADR
记录决策背景和结果
原型验证
通过原型验证架构可行性

考点 13:特定领域软件架构(DSSA)

DSSA 三个基本活动

  1. 领域分析:识别领域共同特征和需求
  2. 领域设计:建立领域架构参考模型
  3. 领域实现:开发可复用组件和工具

DSSA 与通用架构的关系:DSSA 提供特定领域的参考架构,通用架构提供基础模式

考点 14:架构风格深度对比

风格
优点
缺点
典型场景
管道-过滤器
复用、并行、重组
不适合交互、批处理
编译器、ETL
事件驱动
松耦合、可扩展
难调试、无序
GUI、微服务
分层
抽象、复用
性能开销
企业应用
黑板
灵活、专家知识
难测试、慢
AI、语音识别
解释器
灵活性、可定制
性能低
脚本、规则引擎

真题 2023 年·综合知识

题目:以下关于 DSSA(特定领域软件架构)的叙述中,正确的是(  )。

A. DSSA 只适用于单一领域
B. DSSA 的三个基本活动是领域分析、领域设计和领域实现
C. DSSA 不涉及可复用组件
D. DSSA 与通用架构没有关系

答案:B

解析:DSSA 的三个基本活动确实是领域分析、领域设计和领域实现。DSSA 可跨领域应用(A 错),核心就是可复用组件(C 错),与通用架构互补(D 错)。


三、补充考点(二)

考点 15:架构视图模型对比

模型
视图
特点
4+1 视图
逻辑/开发/进程/物理/场景
最流行,用例驱动验证
RM-ODP
企业/信息/计算/工程/技术
ISO 标准,分布式系统
C4 模型
系统/容器/组件/代码
分层抽象,易于理解
Zachman
6 视角 × 6 抽象
企业架构框架,矩阵式

C4 模型四层

层次
关注点
利益相关者
C1 - 系统上下文
系统与外部系统的关系
所有人
C2 - 容器
应用/数据库/微服务
技术人员
C3 - 组件
容器内部的组件
开发人员
C4 - 代码
组件的实现细节
开发人员

考点 16:常见架构模式

模式
说明
适用场景
MVC
Model-View-Controller 三层分离
Web 应用
MVP
Model-View-Presenter,View 更被动
桌面应用
MVVM
Model-View-ViewModel,数据绑定
前端应用
微前端
多个前端应用组合为一个
大型 Web 应用
六边形(端口适配器)
业务逻辑与外部技术解耦
复杂业务系统
CQRS
读写分离,命令和查询分离
高并发系统
Saga
分布式事务编排
微服务系统
边车(Sidecar)
辅助服务与主服务并行
Service Mesh

MVC vs MVP vs MVVM 对比

维度
MVC
MVP
MVVM
View 与 Model
可以直接交互
不直接交互
通过数据绑定
Presenter/VM
处理用户输入
全权负责 UI 逻辑
数据驱动视图
可测试性
复杂度

考点 17:中间件架构深入分析

中间件层次模型

应用层
  ↓
中间件层(RPC、消息、对象、交易、Web、ESB)
  ↓
操作系统层(OS + 网络)
  ↓
硬件层

中间件分类与应用

类别
功能
代表
远程过程调用
透明调用远程服务
gRPC、Dubbo、Thrift
消息中间件
异步解耦通信
Kafka、RabbitMQ、RocketMQ
对象请求代理
分布式对象通信
CORBA、RMI
交易中间件
分布式事务
Tuxedo、Seata
应用服务器
企业应用运行环境
WebLogic、WildFly、Tomcat

消息中间件对比

特性
Kafka
RabbitMQ
RocketMQ
吞吐量
极高
中等
延迟
ms 级
μs 级
ms 级
消息可靠性
极高
适用场景
日志、大数据
业务消息
金融交易
语言
Scala/Java
Erlang
Java

考点 18:架构演化与维护

架构演化驱动力

驱动
说明
业务变化
新业务需求、市场变化
技术演进
新技术出现、旧技术淘汰
质量属性
性能、可用性、安全性需求变化
技术债务
累积的设计妥協需要偿还

架构演化策略

策略
说明
风险
绞杀者模式
新系统逐步替代旧系统
分支抽象
抽取功能到独立服务
并行运行
新旧系统并行一段时间
高成本
大爆炸切换
一次性替换
高风险

架构腐化信号

  • 架构违规:实现偏离了设计的架构
  • 过度耦合:模块间依赖越来越多
  • 功能蔓延:模块承担不属于自己的职责
  • 技术债务累积:临时方案变成永久方案

考点 19:架构文档化与 ADR

架构文档内容

内容
说明
架构概述
系统整体架构描述
架构视图
4+1 视图或 C4 模型
架构决策
关键技术决策及其理由
技术选型
各层技术栈及其理由
风险与缓解
已识别的风险及应对策略

ADR(Architecture Decision Record)

元素
说明
标题
简洁描述决策
状态
建议/已接受/已废弃/已替代
上下文
决策背景和约束
决策
做出的决策
后果
决策带来的结果

真题 2023 年·综合知识

题目:在 C4 模型中,描述系统内部容器及其关系的层次是(  )。

A. C1 - 系统上下文
B. C2 - 容器
C. C3 - 组件
D. C4 - 代码

答案:B

解析:C2 容器层描述系统内部的容器(Web 应用、数据库、微服务等)及其之间的关系。C1 关注系统与外部的关系,C3 关注容器内部组件,C4 关注代码实现。

真题 2022 年·综合知识

题目:以下关于 MVVM 模式的叙述中,正确的是(  )。

A. View 直接与 Model 交互
B. ViewModel 通过数据绑定与 View 通信
C. MVVM 不支持单元测试
D. MVVM 比 MVC 耦合度更高

答案:B

解析:MVVM 模式中,ViewModel 通过数据绑定机制与 View 通信,View 不直接与 Model 交互。数据绑定使得 View 和 ViewModel 松耦合,可测试性好(C 错),耦合度比 MVC 更低(D 错)。

真题 2021 年·综合知识

题目:在架构演化中,绞杀者模式的核心思想是(  )。

A. 一次性替换旧系统
B. 新系统逐步替代旧系统的功能
C. 新旧系统永远并行运行
D. 删除旧系统后重新开发

答案:B

解析:绞杀者模式(Strangler Fig Pattern)的核心是将旧系统的功能逐步迁移到新系统,每次迁移一个功能,直到旧系统完全被替代。这降低了整体替换的风险。

真题 2020 年·综合知识

题目:以下关于 Kafka 和 RabbitMQ 的对比中,正确的是(  )。

A. Kafka 的吞吐量低于 RabbitMQ
B. RabbitMQ 更适合日志收集场景
C. Kafka 适合大数据流处理,RabbitMQ 适合业务消息
D. RabbitMQ 不支持消息可靠性

答案:C

解析:Kafka 适合大数据流处理和日志收集(高吞吐),RabbitMQ 适合业务消息(低延迟、路由灵活)。Kafka 吞吐量更高(A 错),RabbitMQ 不适合日志场景(B 错),RabbitMQ 支持消息可靠性(D 错)。

真题 2022 年·综合知识

题目:以下关于架构文档化的叙述中,不正确的是(  )。

A. 架构文档应包含架构决策及其理由
B. ADR 用于记录重要的架构决策
C. 架构文档只需要在开发完成后编写
D. 架构视图是架构文档的核心内容之一

答案:C

解析:架构文档应在架构设计阶段就开始编写,并随项目演化持续更新,而不是只在开发完成后编写。架构文档包含决策和理由(A 正确),ADR 记录重要决策(B 正确),架构视图是核心内容(D 正确)。

真题 2019 年·综合知识

题目:以下关于架构腐化信号的叙述中,正确的是(  )。

A. 架构违规不会影响系统质量
B. 技术债务累积是架构腐化的信号之一
C. 过度耦合不是架构问题
D. 架构腐化只能通过重写解决

答案:B

解析:技术债务累积是架构腐化的典型信号,表示临时解决方案变成了永久方案,增加维护成本。架构违规会影响系统质量(A 错),过度耦合是严重架构问题(C 错),架构腐化可以通过重构解决(D 错)。

真题 2023 年·案例分析

题目:某大型电商平台计划将单体架构迁移到微服务架构。请分析迁移过程中可以采用的架构演化策略,并说明每种策略的优缺点。

参考答案

架构演化策略分析:

策略
优点
缺点
适用场景
绞杀者模式
风险可控,逐步迁移
迁移周期长
核心业务系统
分支抽象
功能独立,低风险
只适合抽取型功能
新功能拆分
并行运行
安全性高
成本高,维护两套
关键业务
大爆炸切换
快速完成
风险极高
小型非核心系统

推荐方案:采用绞杀者模式进行迁移

理由:

  1. 电商平台是核心业务系统,不能停机,需要渐进式迁移
  2. 可以先抽取独立功能(如用户服务、商品服务、订单服务)为独立微服务
  3. 通过 API 网关统一路由,逐步将流量切换到新系统
  4. 每个微服务独立部署,降低迁移风险
  5. 可以逐步验证新架构的正确性,发现问题及时解决

四、高频易错点归纳

易错点
正确理解
管道-过滤器可以共享状态
过滤器之间不共享状态,这是其核心特征
事件驱动中发布者知道订阅者
事件驱动是匿名通信,互不知道身份
层次式架构只能严格分层
可以松散分层(允许跨层调用)
微服务就是 SOA
微服务是 SOA 的演进,但粒度更细、去中心化
ADL 是编程语言
ADL 是架构描述语言,不是编程语言
MVC 与 MVVM 相同
MVVM 通过数据绑定解耦,MVC 中 View 可直接访问 Model
架构文档只在开发后编写
架构文档应在设计阶段就开始并持续更新
Kafka 适合所有消息场景
Kafka 适合大数据流处理,RabbitMQ 更适合低延迟业务消息

五、本章小结

系统架构设计是全书最核心的章节,务必深入掌握:

  1. 4+1 视图模型
    五个视图各自关注的方面
  2. 五大架构风格
    数据流、调用/返回、独立组件、虚拟机、仓库的特征和适用场景
  3. 架构风格对比
    能在案例分析中根据需求选择合适的架构风格
  4. ABSD
    以架构为中心的开发过程
  5. 微服务架构
    与 SOA 的区别,核心特征和挑战
  6. 架构设计原则
    关注点分离、单一职责、依赖倒置、开闭原则
  7. DSSA
    领域分析/设计/实现三个基本活动
  8. 架构决策
    ATAM、CBAM、ADR 的应用
  9. 视图模型对比
    4+1、RM-ODP、C4、Zachman 的区分
  10. 架构模式
    MVC/MVP/MVVM、微前端、六边形、CQRS、边车
  11. 中间件深入
    消息中间件对比(Kafka/RabbitMQ/RocketMQ)
  12. 架构演化
    绞杀者模式、架构腐化信号、技术债务
  13. 架构文档化
    ADR 要素、架构文档内容结构

抱歉,评论功能暂时关闭!