Appearance
考点清单
- [x] 断路器模式 3 状态
- [x] C/S 与 B/S 架构层次
- [x] 质量属性 6 要素 + 场景识别
- [x] ATAM 效用树结构 + 3 种场景类型
- [x] 敏感点 vs 权衡点 vs 风险点
- [x] ISO 25010 可靠性 4 子特性
- [x] 微服务 vs 单体架构对比
- [x] ping/echo vs 心跳
- [x] WSDL/SOAP/UDDI 角色分工
- [x] 架构风格分类与辨析
- [x] ABSD / DSSA
- [x] 体系结构演化 6 步骤
笔记
一、断路器模式 3 状态 ★
| 状态 | 行为 |
|---|---|
| 关闭(Closed) | 请求正常通过,断路器不介入 |
| 打开(Open) | 错误超阈值,请求快速失败 |
| 半打开(Half-Open) | 打开一段时间后,尝试放行部分请求检测服务是否恢复 |
二、C/S 与 B/S 架构层次
| 架构 | 层次 |
|---|---|
| 两层 C/S | 客户端 + 数据库服务器 |
| 三层 C/S | 客户端 + 应用服务器 + 数据库服务器(表现层/业务逻辑层/数据访问层) |
| B/S | 特殊的三层架构(浏览器 - Web 服务器 - 数据库) |
"功能层"不是标准术语,标准三层:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
三、质量属性 6 要素 ★
| 要素 | 说明 |
|---|---|
| 刺激源 | 产生刺激的物理/逻辑实体 |
| 刺激 | 触发事件 |
| 环境 | 刺激发生时系统所处条件 |
| 制品 | 被刺激的系统或部分 |
| 响应 | 刺激到达后采取的行动 |
| 响应度量 | 可测量的指标 |
质量属性场景识别示例:
| 场景 | 质量属性 |
|---|---|
| 系统业务故障时 3 秒内启动备用系统 | 可用性 |
| 用户输入→处理→展示结果 | 功能性 |
| 数据导入导出 1 分钟内完成 | 性能 |
| 用户量增长 3 天内扩展空间 | 可修改性 |
| 支持 3 国语言 + 搜索自动补全 | 易用性 |
| 云服务器故障 2 秒内切换 | 可用性 |
| 远程在线诊断查看问题 | 可测试性 |
| 1 分钟检测故障 + 1 小时恢复 | 可靠性 |
| 多因素认证(密码+指纹+面容+IC卡) | 安全性 |
四、ATAM 效用树 ★
结构(根→叶):树根(总体目标)→ 质量属性(性能/安全等)→ 属性分类(如性能→延迟/吞吐量)→ 质量属性场景(叶子节点)。
效用树是评估工具,而非设计工具。
ATAM 3 种场景:
- 用例场景:正常操作下的预期使用方式
- 增长场景:适应未来变化的架构修改
- 探索性场景:极端情况(高负载/故障/攻击)
质量属性评估方法:
| 方法 | 特点 | 工具 |
|---|---|---|
| SAAM | 评估可修改性,使用场景 | 场景 |
| ATAM | 综合架构评估,权衡分析 | 效用树 |
| CBAM | 成本效益分析 | ATAM 后续补充 |
五、敏感点 vs 权衡点 vs 风险点 ★
| 概念 | 定义 |
|---|---|
| 敏感点 | 为实现某个特定质量属性产生影响的设计决策点 |
| 权衡点 | 影响多个质量属性的敏感点,调整时对其他属性有负面影响 |
| 风险点 | 架构设计中可能导致项目失败的设计决策 |
| 非风险点 | 与风险点相对 |
六、ISO 25010 可靠性 4 子特性 ★
ISO 25010 中,"可用性"是"可靠性"的子特性。
| 子特性 | 说明 | 通俗理解 |
|---|---|---|
| 成熟性(Maturity) | 正常运行时满足可靠性要求的程度 | "别主动出错" |
| 可用性(Availability) | 系统需要时可操作和访问的程度 | "需要时就能用" |
| 容错性(Fault Tolerance) | 存在故障仍能按预期运行 | "出错了也别趴窝" |
| 可恢复性(Recoverability) | 故障后恢复数据并达到预期状态 | "趴窝了快速爬起来" |
"稳定性"在 ISO 25010 中非官方术语,常被误归于性能效率。
易分析性属于可维护性子特性(非易用性)。数据延迟时间是性能效率指标,非可用性指标。
七、微服务 vs 单体架构 ★
| 维度 | 单体架构 | 微服务架构 |
|---|---|---|
| 代码结构 | 单一代码库,模块紧耦合 | 多独立代码库,服务松耦合 |
| 数据管理 | 共享数据库,ACID 事务 | 独立数据库,需处理最终一致性(BASE) |
| 部署方式 | 整体打包(WAR) | 独立容器化(Docker+K8s) |
| 扩展性 | 垂直扩展(Scale-Up) | 水平扩展(Scale-Out) |
| 技术栈 | 统一 | 多语言混合(Polyglot) |
| 架构 | 适用场景 |
|---|---|
| 单体 | 小项目(<10人)、快速验证、强一致性要求(银行核心) |
| 微服务 | 大型系统(>50人)、快速迭代(电商、社交网络) |
微服务缺点:复杂度高、部署测试成本高、运维成本高(链路追踪等)、分布式事务问题。
八、ping/echo vs 心跳
| 机制 | 特点 | 频率 | 用途 |
|---|---|---|---|
| Ping/Echo | 客户端发 ping,服务器回 echo | 可能需要更频繁 | 检测连接状态 |
| 心跳(Heartbeat) | 定期发心跳包,对方回复确认 | 较低频率 | 维持长连接 |
心跳资源利用率更低:频率低、数据量小、维持活跃状态。
九、WSDL / SOAP / UDDI ★
| 协议 | 角色 | 类比 |
|---|---|---|
| WSDL | 服务接口说明书(what/how/where) | API 合同 |
| SOAP | 服务间通信数据传输规范(Envelope + Header + Body) | 商务信函/国际快递包裹 |
| UDDI | 服务注册中心,发布和发现 | 电话簿 |
协同流程:提供者发 WSDL 到 UDDI → 消费者查 UDDI 获取 WSDL → 根据 WSDL 生成 SOAP 请求 → 发送 SOAP 消息。
十、架构风格分类与辨析 ★
| 大类 | 子风格 | 易错点 |
|---|---|---|
| 调用返回 | 主程序子程序、面向对象、层次 | 黑板不属于调用返回(由数据状态驱动) |
| 数据流 | 管道-过滤器、批处理 | 管道过滤器可并行执行;批处理顺序执行 |
| 仓库风格 | 黑板(特殊仓库)、中央数据结构 | 黑板 ≠ 管道-过滤器;管道过滤器不是仓库子风格 |
| 虚拟机 | 解释器、基于规则的系统 | 基于规则系统构建在解释器之上 |
| 独立构件 | 进程通信、事件驱动 | 进程通信连接件=消息传递;事件驱动=松耦合 |
仓库风格核心:共享的中央数据结构。黑板三要素:黑板 + 知识源 + 控制器。
十一、ABSD(基于属性的软件设计)
需求来源 3 类:
- 系统的业务目标
- 系统的质量目标
- 系统开发人员的业务目标(预算、周期、技术栈、可维护性等)
十二、DSSA(特定领域软件架构)
| 知识点 | 说明 |
|---|---|
| 三阶段 | 领域分析 → 领域设计 → 领域实现 |
| 过程模型 | 迭代精化,与螺旋模型相似(非原型模型) |
| 领域专家角色 | 领域分析员、领域设计员、领域实现员 |
十三、互操作性与网格计算
最具代表性组合:五层沙漏模型 + 开放式 Web Service(基于开放标准实现异构资源互操作)。
十四、体系结构演化 6 步骤
分析变化 → 制定计划 → 修改构件 → 更新构件间交互关系 → 组装测试 → 评审。
十五、其他速记
| 知识点 | 速记 |
|---|---|
| ESB | SOA 核心基础设施,实现位置透明性和通信协议解耦 |
| DDD 领域层 | 承载业务规则和状态,纯业务逻辑,不含技术实现细节 |
| SOAP 信封编码 | 信封和 XML 编码定义在不同命名空间 |
| 基于度量的评估 | 最终推导的是质量属性 |
| 可修改性 vs 可扩展性 | 可修改性=适应新需求/变化;可扩展性=容量增长 |