# 软考架构师·高可用与业务连续性 专题总文档 > 覆盖:可用性理论(MTBF/MTTR/可用度/几个9/串并联可靠性)、冗余

举报
yuebao 发表于 2026/10/26 23:09:56 2026/10/26
【摘要】 软考架构师·高可用与业务连续性 专题总文档覆盖:可用性理论(MTBF/MTTR/可用度/几个9/串并联可靠性)、冗余与故障切换(主备/双活/N+1/2N/冷温热备)、负载均衡与流量调度、数据可靠性(多副本/纠删码/RAID)、业务连续性管理(BCM/BCP/DRP/BIA/RPO/RTO)、灾备等级(GB/T 20988六级/同城双活/异地多活/两地三中心/三地五中心)、容灾技术(同步异步...

软考架构师·高可用与业务连续性 专题总文档

覆盖:可用性理论(MTBF/MTTR/可用度/几个9/串并联可靠性)、冗余与故障切换(主备/双活/N+1/2N/冷温热备)、负载均衡与流量调度、数据可靠性(多副本/纠删码/RAID)、业务连续性管理(BCM/BCP/DRP/BIA/RPO/RTO)、灾备等级(GB/T 20988六级/同城双活/异地多活/两地三中心/三地五中心)、容灾技术(同步异步复制/CDP)、集群高可用(Quorum/脑裂/仲裁/Fencing)、稳定性防护(限流降级熔断隔离)、云原生高可用(多AZ/多Region/自愈)、选型权衡、易混陷阱、计算题型、双轨口诀、速记总表、背诵路线。


一、思维导图(全章概览)

高可用与业务连续性体系
├── 理论基石
│   ├── 可用性 A = MTBF / (MTBF + MTTR)
│   ├── 可靠性 R(t) = e^(-λt),λ = 1/MTBF
│   ├── 可用度等级:99%→99.9%→99.99%→99.999%→99.9999%(2~6个9)
│   ├── 串联系统:R = R1 × R2 × ... × Rn(越串越低)
│   ├── 并联系统:R = 1 - ∏(1 - Ri)(越并越高)
│   └── 混联:先并后串 / 先串后并
├── 冗余与故障切换
│   ├── 主备:冷备 / 温备 / 热备
│   ├── 双活:主主(Active-Active) / 负载分担
│   ├── 冗余配置:N+1 / 2N / N+M / 2N+1(仲裁)
│   └── 切换指标:RTO / RPO / 切换时间 / 数据丢失量
├── 负载均衡与流量调度
│   ├── DNS层:轮询 / 加权 / GeoDNS / GTM
│   ├── 硬件LB:F5 / A10 / Citrix NetScaler
│   ├── 软件LB:Nginx / HAProxy / LVS / Envoy
│   ├── 调度算法:轮询/加权/最少连接/IP_HASH/一致性Hash/P2C
│   └── 全局调度:Anycast / BGP / 多活DNS
├── 数据可靠性
│   ├── 多副本:3副本 / 主从 / Raft / Paxos
│   ├── 纠删码(EC):(k,m) 编码,存储开销 k/(k+m)
│   ├── RAID:0/1/5/6/10/01 — 条带/镜像/校验
│   └── WNR Quorum:R + W > N 强一致;W > N/2 写法定人数
├── 业务连续性管理(BCM)
│   ├── BIA 业务影响分析 → RTO/RPO 量化
│   ├── BCP 业务连续性计划
│   ├── DRP 灾难恢复计划
│   └── MTPD / SDO / WRT / MAD(时间链)
├── 灾备等级与架构
│   ├── GB/T 20988-2007 六级(1~6级)
│   ├── 同城双活(RPO≈0,RTO≈分钟级)
│   ├── 异地多活(RPO>0,RTO 分钟~小时)
│   ├── 两地三中心(同城双活+异地灾备)
│   └── 三地五中心 / 单元化部署
├── 容灾技术
│   ├── 数据级:存储复制(同步/异步)/CDP
│   ├── 数据库级:日志同步/逻辑复制/物理复制
│   ├── 应用级:应用切换/流量调度/全局路由
│   └── 复制模式:同步(RPO=0) / 异步(RPO>0) / 半同步
├── 集群高可用
│   ├── Quorum:多数派 > N/2
│   ├── 脑裂(Split-Brain):双主导致数据不一致
│   ├── 仲裁(Witness):奇数节点 / 外部仲裁盘
│   ├── Fencing / STONITH:隔离故障节点
│   └── Split-Brain 检测与预防
├── 稳定性防护
│   ├── 限流:计数器/滑动窗口/漏桶/令牌桶
│   ├── 熔断:Closed/Open/Half-Open 三态
│   ├── 降级:有损服务 / 兜底 / 静态化
│   ├── 隔离:线程池/信号量/舱壁模式
│   └── 超时/重试/背压/退避
├── 云原生高可用
│   ├── 多AZ / 多Region / 跨可用区调度
│   ├── 健康检查:Liveness / Readiness / Startup Probe
│   ├── 自愈:重启/驱逐/重建/滚动更新
│   ├── 弹性:HPA / VPA / Cluster Autoscaler
│   └── 调度策略:反亲和 / PodDisruptionBudget / 拓扑分布
├── 选型比较(横向对比表)
├── 易混陷阱(易混淆点辨析)
├── 避坑实践(生产实践注意事项)
├── 计算题型(串并联/RTO-RPO/冗余度/副本数)
├── 关联图(知识点关系图)
├── 双轨口诀(顺口溜+谐音两种记忆口诀)
└── 速记总表(考前速查表)

二、理论基石:可用性与可靠性

2.1 核心定义

指标 全称 定义 公式
MTBF Mean Time Between Failures 平均无故障时间(两次故障间的平均时间) MTBF = 总正常运行时间 / 故障次数
MTTR Mean Time To Repair 平均修复时间(故障到恢复的平均时间) MTTR = 总停机时间 / 故障次数
MTTF Mean Time To Failure 平均故障前时间(不可修系统到首次故障) MTTF = 总运行时间 / 故障次数
A Availability 可用性/可用度 A = MTBF / (MTBF + MTTR)
R(t) Reliability 可靠性(t时刻仍正常工作的概率) R(t) = e^(-λt),λ = 1/MTBF
λ Failure Rate 故障率 λ = 1/MTBF

关键区别:

  • 可用性(A) 是长期统计的"时间比例",关注"能用的比例"。
  • 可靠性® 是"在规定时间 t 内不出故障的概率",关注"不出故障"。
  • 高可用不一定高可靠:频繁故障但快速恢复 → 可用性高,可靠性低。

2.1.1 MTTF、MTBF、MTTR 三者关系详解

三者定义对比:

指标 适用系统 时间起点 时间终点 含义
MTTF 不可修复系统 系统启动/上次恢复 首次故障 到首次故障的平均运行时间
MTBF 可修复系统 上次故障恢复 下次故障发生 两次故障之间的平均间隔时间
MTTR 可修复系统 故障发生 修复完成 故障到恢复的平均修复时间

时间线图示:

可修复系统时间线:
|←── MTTF ──→|←MTTR→|←── MTTF ──→|←MTTR→|←── MTTF ──→|
|   正常运行   | 修复  |   正常运行   | 修复  |   正常运行   |
|←──────── MTBF(严格) ────────→|  (含修复的完整周期)

不可修复系统时间线:
|←────── MTTF ──────→|×(报废,不修复)
|       正常运行       |

核心关系式:

MTBF=MTTF+MTTR\boxed{MTBF = MTTF + MTTR}

对于可修复系统,一个完整的"运行→故障→修复"周期中:

  • 正常运行时间 = MTTF
  • 修复时间 = MTTR
  • 完整周期 = MTTF + MTTR = MTBF(严格定义下)

两种定义体系对比:

体系 MTBF 的定义口径 可用性公式 说明
严格定义(可靠性工程) MTBF = MTTF + MTTR(含修复的完整周期) A = MTTF / MTBF MTTF 是纯运行时间,MTBF 是完整周期
软考常用定义 MTBF = 平均无故障工作时间(不含修复,纯运行) A = MTBF / (MTBF + MTTR) MTBF 是纯运行,MTBF+MTTR 才是完整周期

考试关键:两种体系本质等价,只是 MTBF 的定义口径不同:

  • 严格定义:MTBF 含修复 → A = MTTF / MTBF = MTTF / (MTTF + MTTR)
  • 软考常用:MTBF 不含修复 → A = MTBF / (MTBF + MTTR)
  • 软考答题优先用 A = MTBF / (MTBF + MTTR),除非题目明确给出 MTTF。

可用性公式的统一理解:

A=正常运行时间正常运行时间+修复时间=正常运行时间总时间A = \frac{\text{正常运行时间}}{\text{正常运行时间} + \text{修复时间}} = \frac{\text{正常运行时间}}{\text{总时间}}

无论用哪种符号,本质都是"能正常工作的时间占总时间的比例"。

不可修复 vs 可修复系统:

维度 不可修复系统 可修复系统
适用指标 只有 MTTF MTBF、MTTR(及 MTTF)
故障后 报废/更换,不修复 修复后继续使用
可靠性 R(t) = e^(-λt),λ = 1/MTTF R(t) = e^(-λt),λ = 1/MTBF
可用性 不适用(故障后不再运行) A = MTBF / (MTBF + MTTR)
典型 灯泡/一次性芯片 服务器/数据库/网络设备

易混提醒:

  • MTTF 用于不可修复系统(到首次故障),MTBF 用于可修复系统(故障间隔)。
  • 不可修复系统谈不上"可用性"(坏了就没了),只有"可靠性"。
  • 可修复系统的故障率 λ = 1/MTBF(严格定义下 λ = 1/(MTTF+MTTR))。

2.2 可用度等级(几个9)

等级 可用度 年停机时间 月停机时间 典型场景
2个9 99% 3.65 天 7.2 小时 个人博客/测试环境
3个9 99.9% 8.76 小时 43.8 分钟 一般企业应用
4个9 99.99% 52.6 分钟 4.38 分钟 核心业务系统
5个9 99.999% 5.26 分钟 26.3 秒 电信/金融核心
6个9 99.9999% 31.5 秒 2.63 秒 极端关键系统

速记:年停机时间 ≈ (1 - A) × 365 × 24 × 60 分钟。

  • 3个9 → 8.76h ≈ 525分钟
  • 4个9 → 52.6分钟
  • 5个9 → 5.26分钟
  • 每多一个9,年停机时间缩小约10倍。

2.3 串联系统可靠性

串联:所有部件都正常,系统才正常。任一故障 → 系统故障。

R串=R1×R2×⋯×Rn=∏i=1nRiR_{串} = R_1 \times R_2 \times \cdots \times R_n = \prod_{i=1}^{n} R_i

  • 串联越多,可靠性越低。
  • 两个 0.9 串联:R = 0.9 × 0.9 = 0.81

可用性同理:A串=A1×A2×⋯×AnA_{串} = A_1 \times A_2 \times \cdots \times A_n

2.4 并联系统可靠性

并联(冗余备份):至少一个正常,系统就正常。全部故障 → 系统故障。

R并=1−(1−R1)(1−R2)⋯(1−Rn)=1−∏i=1n(1−Ri)R_{并} = 1 - (1-R_1)(1-R_2)\cdots(1-R_n) = 1 - \prod_{i=1}^{n}(1-R_i)

  • 并联越多,可靠性越高。
  • 两个 0.9 并联:R = 1 - (1-0.9)² = 1 - 0.01 = 0.99

n个相同部件并联:R并=1−(1−R)nR_{并} = 1 - (1-R)^n

2.5 混联系统

模式 结构 计算方法
先并后串 并联组再串联 先算各并联组 R,再相乘
先串后并 串联组再并联 先算各串联组 R,再并联

考试技巧:化简混联 → 逐步用串/并联公式合并 → 最终得一个等效 R。

2.6 k/n 表决系统(G系统)

k/n 表决:n 个部件中至少 k 个正常,系统才正常。

Rk/n=∑i=kn(ni)Ri(1−R)n−iR_{k/n} = \sum_{i=k}^{n} \binom{n}{i} R^i (1-R)^{n-i}

  • 并联 = 1/n 表决(至少1个正常)
  • 串联 = n/n 表决(全部正常)
  • 常见 2/3 表决:3节点集群,多数派(≥2)正常即可用

2/3 表决(R=0.9):

R2/3=(32)(0.9)2(0.1)+(33)(0.9)3=3×0.081+0.729=0.243+0.729=0.972R_{2/3} = \binom{3}{2}(0.9)^2(0.1) + \binom{3}{3}(0.9)^3 = 3 \times 0.081 + 0.729 = 0.243 + 0.729 = 0.972

重要结论:2/3 表决(0.972) > 单节点(0.9),但 < 3并联(0.999)。表决系统在提高可靠性的同时兼顾一致性。


三、冗余与故障切换

3.1 主备模式分类

模式 备机状态 切换时间(RTO) 数据丢失(RPO) 成本 适用场景
冷备 关机,不运行 小时~天级 可能丢失全部增量 低 非关键/仅兜底
温备 运行但不承载流量,数据定期同步 分钟~小时级 同步周期内的增量 中 一般业务
热备 运行且实时同步数据,随时可切 秒~分钟级 ≈0(近实时) 高 核心业务
双活(主主) 同时承载流量,互为备份 ≈0(无切换) 0 最高 极核心/金融

冷→温→热→双活:RTO 递减,RPO 递减,成本递增。

3.1.1 主动冗余 vs 被动冗余

主动冗余(Active Redundancy):所有冗余部件同时运行,共同承担负载。

被动冗余(Passive Redundancy / Standby Redundancy):冗余部件处于待命/备用状态,仅当主部件故障时才接管。

维度 主动冗余(Active) 被动冗余(Passive/Standby)
运行状态 所有部件同时运行 仅主部件运行,备件待命
别名 热冗余 / 并行冗余 冷冗余 / 备用冗余
对应模型 并联系统 主备/备份系统
负载承担 共同分担负载 备件不承担(故障时接管)
切换 无需切换(都在运行) 需故障检测+切换
RTO ≈0(无切换延迟) >0(有切换时间)
资源利用率 高(全部参与工作) 低(备件闲置)
并发问题 有(需解决数据一致性/写冲突) 无(单点写入)
实现难度 高(需共识/同步/负载分担) 低(主→备单向同步)
成本 高 较低
可靠性计算 R = 1 - ∏(1-Ri)(并联公式) R = R主 + (1-R主)×R切换×R备
典型场景 双活集群/负载均衡/多副本读写 主备数据库/冷温热备

可靠性计算对比:

主动冗余(并联)——所有部件同时工作,任一正常系统即正常:

R主动=1−∏i=1n(1−Ri)R_{主动} = 1 - \prod_{i=1}^{n}(1-R_i)

例:2个部件 R=0.9 主动冗余 → R = 1-(1-0.9)² = 0.99

被动冗余(备用)——主部件工作,故障后切换到备部件:

R被动=R主+(1−R主)×R切换×R备R_{被动} = R_{主} + (1 - R_{主}) \times R_{切换} \times R_{备}

例:主 R=0.9,备 R=0.9,切换成功率 R切换=0.95
R = 0.9 + (1-0.9)×0.95×0.9 = 0.9 + 0.0855 = 0.9855
若切换完全可靠(R切换=1):R = 0.9 + 0.1×0.9 = 0.99(与主动冗余相同)

关键区别:

  • 主动冗余无需切换,可靠性纯由部件可靠性决定。
  • 被动冗余需切换,可靠性还取决于切换成功率,切换失败则系统失效。
  • 当切换完全可靠(R切换=1)时,主动冗余 = 被动冗余(可靠性相同)。
  • 实际中切换不可能100%可靠,故主动冗余可靠性 ≥ 被动冗余。

主动冗余的典型实现:

  • 负载均衡集群:Nginx/LVS 后端多台服务器同时服务
  • 双活数据中心:两个中心同时承载流量
  • 多副本读写:数据库多副本同时提供读服务
  • Anycast:多节点同一IP,就近接入

被动冗余的典型实现:

  • 主备数据库:MySQL主从、Oracle DG(主备模式)
  • VIP漂移:Keepalived/VRRP 主备切换
  • 冷温热备:备机待命,故障时接管
  • 集群主从:Redis Sentinel主从切换

选型决策:

           ┌─ RTO≈0 且能解决一致性 → 主动冗余(双活/负载均衡)
           │
要求 ──────┤─ RTO>0 可接受 且 追求简单 → 被动冗余(主备)
           │
           └─ 成本敏感 且 非核心 → 被动冗余(冷备/温备)

考试要点:

  • 主动冗余对应并联可靠性模型,被动冗余对应主备模型。
  • 主动冗余的可靠性公式不含切换成功率,被动冗余的公式含切换成功率。
  • 主动冗余的核心挑战是数据一致性/写冲突,被动冗余的核心挑战是切换可靠性/切换延迟。

3.2 冗余配置模式

模式 含义 最小冗余 典型应用
N+1 N个工作 + 1个备份 1个备机 中间件/数据库主备
N+M N个工作 + M个备份 M个备机 高要求场景
2N 每个工作节点都有独立备份 N个备机 严格隔离/双机房
2N+1 2N个 + 1个仲裁 1个仲裁节点 集群仲裁/避免脑裂

N+1 vs 2N:

  • N+1:共享备份,成本低,但备份单点故障时全部失效。
  • 2N:独立备份,隔离性强,成本翻倍。

3.3 Active-Active(双活/主主)vs Active-Standby(主备)

维度 Active-Standby(主备) Active-Active(双活)
流量承载 仅主节点 所有节点同时承载
资源利用率 备节点闲置,~50% ~100%
切换 需显式Failover 无切换,流量自动转移
RTO 秒~分钟 ≈0
数据一致性 主→备单向同步 双向同步/分布式共识
实现难度 较低 高(需解决写冲突)
成本 较低 高

3.4 故障切换(Failover)关键步骤

故障检测 → 仲裁确认 → 资源切换 → 流量重路由 → 数据修复 → 故障恢复
步骤 关键参数 常见机制
故障检测 心跳超时 Heartbeat / Health Check / Gossip
仲裁确认 Quorum投票 多数派 / Witness节点 / 仲裁服务
资源切换 VIP漂移 / DNS切换 Keepalived(VRRP) / DNS / GTM
流量重路由 路由更新 BGP / Anycast / 负载均衡健康检查
数据修复 增量同步 日志回放 / CDP / 全量+增量

四、负载均衡与流量调度

4.1 负载均衡分层

层级 技术 特点
DNS层 DNS轮询 / GeoDNS / GTM 全局入口,粒度粗,TTL延迟
网络层(L4) LVS(DR/TUN/NAT) / F5 基于IP+端口,性能高,不感知应用
应用层(L7) Nginx / HAProxy / Envoy 基于URL/Header/Cookie,灵活,性能略低
全局调度 Anycast / BGP / 多活DNS 跨Region调度,就近接入

4.2 调度算法

算法 说明 适用场景
轮询(RR) 依次分配 服务器性能相同
加权轮询(WRR) 按权重分配 服务器性能不同
最少连接(LC) 分配给连接数最少的 长连接/请求耗时差异大
加权最少连接(WLC) 权重+连接数综合 通用
IP Hash 同IP固定到同一后端 会话保持(有状态)
一致性Hash 节点增减时最小迁移 缓存/分片路由
P2C(Power of Two Choices) 随机选2个取较优 大规模、低开销
最快响应 分配给响应最快的 对延迟敏感

4.3 LVS 三种工作模式

模式 原理 后端可见性 性能 适用
NAT LB修改目标IP,响应经LB返回 后端无需公网IP 中(LB是瓶颈) 小规模
DR(直连路由) LB改MAC地址,后端直接响应客户端 后端需与LB同网段 高(响应不经LB) 大规模
TUN(IP隧道) LB封装IP隧道,后端直接响应 后端可跨网段 高 跨机房

考试要点:DR 模式响应不经过 LB,性能最好但要求同网段;TUN 可跨网段但需支持IP隧道。

4.4 健康检查机制

类型 检查内容 示例
TCP检查 端口是否可连 tcp_connect:8080
HTTP检查 HTTP响应码/内容 GET /health 期望 200
自定义脚本 执行脚本判断 检查DB连接+磁盘+内存
被动检查 根据请求失败率自动标记不健康 连续N次失败 → 摘除

五、数据可靠性

5.1 多副本(Replication)

策略 副本数 写入要求 一致性 存储开销
单副本 1 写1即可 强 1x
2副本 2 写2 强(需都成功) 2x
3副本 3 写多数(≥2) Quorum强一致 3x
WNR Quorum N 写W读R R+W>N→强一致 Nx

5.2 Quorum(WNR)机制

N = 副本总数,W = 写成功所需副本数,R = 读成功所需副本数。

条件 一致性保证
W + R > N 强一致性(读写必有交集)
W > N/2 写法定人数(同一时刻只有一个写成功)
R > N/2 读法定人数(读到最新写入)
W + R ≤ N 可能读到旧数据(弱一致/最终一致)

典型配置:N=3, W=2, R=2 → 强一致,容忍1节点故障。
高可用读:N=3, W=3, R=1 → 写需全部成功,读容忍2节点故障。

5.3 纠删码(Erasure Coding, EC)

EC(k, m):将数据分为 k 个数据块 + m 个校验块,共 k+m 个块,容忍任意 m 个块丢失。

维度 多副本(3副本) EC(4,2) EC(6,3)
存储开销 3x 1.5x (6/4) 1.5x (9/6)
容错能力 容忍2块丢失 容忍2块丢失 容忍3块丢失
读性能 高(直接读) 中(需计算) 中
写性能 高 低(需编码) 低
适用 热数据/随机读写 冷数据/归档 大规模冷存储

EC 核心优势:相同容错能力下,存储开销远低于多副本。HDFS EC、Ceph EC、对象存储冷数据常用。

5.4 RAID 级别

级别 结构 最少盘数 容错 可用容量 读写性能 适用
RAID 0 条带 2 不容错 100% 最高 临时数据/性能优先
RAID 1 镜像 2 容1盘 50% 读高写中 系统盘/关键数据
RAID 5 条带+分布式校验 3 容1盘 (n-1)/n 读高写低 通用/小规模
RAID 6 条带+双校验 4 容2盘 (n-2)/n 读高写更低 大规模/可靠性优先
RAID 10 RAID1+0(镜像再条带) 4 每镜像组容1盘 50% 读高写高 数据库/高性能
RAID 01 RAID0+1(条带再镜像) 4 每条带组容1盘 50% 读高写高 较少用

RAID 10 vs RAID 01:

  • RAID 10:先镜像再条带。容错取决于镜像组分布,实际可靠性更高。
  • RAID 01:先条带再镜像。一个条带组全坏则整体失效。
  • 考试结论:RAID 10 可靠性 > RAID 01,生产环境优先 RAID 10。

5.5 RAID 5/6 校验原理

  • RAID 5:异或(XOR)校验,分布式校验盘(校验信息轮流分布在各盘)。
  • RAID 6:双重校验(Reed-Solomon 码),可恢复任意2盘同时故障。

六、业务连续性管理(BCM)

6.1 BCM 体系框架

BCM 业务连续性管理
├── BIA 业务影响分析(前置)
│   ├── 识别关键业务流程
│   ├── 评估影响(财务/声誉/合规/法律)
│   ├── 确定RTO/RPO(量化目标)
│   └── 确定MTPD/SDO/WRT(时间链)
├── BCP 业务连续性计划
│   ├── 灾难响应流程
│   ├── 替代处理方案
│   └── 人员职责与通讯录
├── DRP 灾难恢复计划
│   ├── 技术恢复步骤
│   ├── 系统恢复优先级
│   └── 数据恢复流程
├── 测试与演练
│   ├── 桌面演练 / 模拟演练 / 全量切换演练
│   └── 演练频率与改进
└── 持续维护
    ├── 定期更新BCP/DRP
    └── 组织培训

6.2 RPO 与 RTO(核心概念)

指标 全称 含义 方向 衡量
RPO Recovery Point Objective 恢复点目标:可容忍的数据丢失量 过去(丢多少数据) 时间或数据量
RTO Recovery Time Objective 恢复时间目标:可容忍的业务中断时间 未来(多久恢复) 时间
       故障发生          恢复完成
         |                 |
         |←── RTO ──→|
         |                 |
    ─────┤                 ├─────→
         |                 |
    RPO→ |                 |
    (可丢失的数据时段)      |

RPO=0:不丢任何数据(同步复制)。
RTO=0:不中断业务(双活/无切换)。
RPO 和 RTO 越小,成本越高。

6.3 BCM 时间链(完整时间模型)

指标 全称 含义
MTPD Maximum Tolerable Period of Disruption 最大可容忍中断时间(业务彻底不可恢复的极限)
RTO Recovery Time Objective 恢复时间目标(RTO ≤ MTPD)
WRT Work Recovery Time 工作恢复时间(系统恢复后,业务验证/数据校验/补录的时间)
SDO Sum of Downtime Objectives 总停机时间目标(RTO + WRT ≤ MTPD)
MAD Maximum Allowable Downtime 最大允许停机时间(同 MTPD)

关系链:RTO + WRT ≤ MTPD

  • RTO 是"技术恢复"时间(系统可用)
  • WRT 是"业务恢复"时间(验证/补数据/确认)
  • 两者之和不能超过 MTPD(业务极限)

6.4 BIA 分析步骤

  1. 识别关键业务流程 → 梳理业务清单
  2. 评估业务影响 → 财务损失/声誉/合规/客户流失
  3. 确定依赖关系 → 应用/数据/网络/人员/第三方
  4. 量化 RTO/RPO → 按影响程度分级
  5. 确定恢复优先级 → 关键业务先恢复

6.5 业务分级与 RTO/RPO 典型映射

级别 业务类型 RTO RPO 灾备方案
一级 核心交易/支付 < 1分钟 = 0 同城双活+异地灾备
二级 重要业务/账务 < 15分钟 < 1分钟 同城热备+异步灾备
三级 一般业务/查询 < 1小时 < 15分钟 同城温备
四级 非关键/报表 < 4小时 < 1小时 异地冷备

七、灾备等级与架构

7.1 GB/T 20988-2007《信息安全技术 信息系统灾难恢复规范》

六个等级(从低到高):

级别 名称 RTO RPO 数据传输 典型方案
1级 基本支持 2天~7天 1天~7天 离线人工搬运 备份介质异地存放
2级 备用场地支持 8小时~3天 1天~7天 定期备份+运输 备用机房+介质恢复
3级 电子数据传输 8小时~3天 数小时~1天 电子传输备份 定期备份+网络传输
4级 电子传输及完整设备 2小时~8小时 数分钟~数小时 实时备份+设备就绪 温备/热备
5级 实时数据传输及完整设备 0~2小时 0~数分钟 实时复制 同步复制+热备
6级 数据零丢失及远程集群 ≈0 =0 实时同步+应用切换 双活/集群远程

记忆要点:

  • 1~3级:RTO 和 RPO 都在"天"级别,非实时。
  • 4~5级:RTO 进入"小时"级别,数据近实时。
  • 6级:RPO=0(零数据丢失),RTO≈0(应用自动切换)。

7.2 灾备架构模式

7.2.1 同城双活

        ┌─── 同城双活(距离<100km,RTT<2ms)───┐
        │                                       │
   ┌────┴────┐                            ┌────┴────┐
   │ 中心A   │ ←── 同步复制(RPO=0) ──→ │ 中心B   │
   │(AZ-1)   │                            │(AZ-2)   │
   └─────────┘                            └─────────┘
        ↑                                       ↑
        └───────── 全局DNS/GTM 流量调度 ─────────┘
维度 值
距离 <100km
网络延迟(RTT) <2ms
复制方式 同步
RPO =0
RTO 分钟级(流量切换)
适用 金融核心/一级业务

7.2.2 异地灾备

   ┌──────────┐                        ┌──────────┐
   │ 主中心   │ ── 异步复制(RPO>0) ──→ │ 异地灾备 │
   │(同城A)   │                        │ 中心(远) │
   └──────────┘                        └──────────┘
维度 值
距离 >300km
复制方式 异步
RPO >0(秒~分钟级)
RTO 小时级(需启动灾备系统)
适用 大规模灾难兜底

7.2.3 两地三中心(最经典)

   ┌─── 同城 ───┐                    ┌─── 异地 ───┐
   │             │                    │             │
┌──┴──┐      ┌──┴──┐               ┌──┴──┐
│中心A│←同步→│中心B│  ──异步复制──→ │中心C│
│(AZ1)│      │(AZ2)│               │(远) │
└─────┘      └─────┘               └─────┘
   ↑              ↑                     ↑
   └── 同城双活 ──┘                     │
                                         │
              异地灾备(兜底)───────────┘
中心 角色 复制 RPO
中心A 同城主 — —
中心B 同城备 同步 0
中心C 异地灾备 异步 >0

两地三中心 = 同城双活(A+B) + 异地灾备©。兼顾同城 RPO=0 和异地大灾难兜底。

7.2.4 三地五中心 / 单元化部署

三地五中心:3个城市 × (同城双活 + 灾备) = 5个数据中心
单元化部署:按用户/业务维度切分单元,每个单元自包含,跨单元异步
维度 两地三中心 三地五中心
中心数 3 5
RPO(同城) 0 0
RPO(异地) >0 ≈0(多活)
RTO 分钟~小时 分钟级
成本 中 高
适用 金融/大型企业 超大规模/互联网巨头

7.3 灾备架构选型决策

                    ┌─ RPO=0 且 RTO≈0 → 同城双活 / 三地五中心多活
                    │
业务要求 ──────────┤─ RPO=0 且 RTO<分钟 → 同城双活 + 异地灾备(两地三中心)
                    │
                    ├─ RPO<分钟 且 RTO<小时 → 同城热备 + 异步灾备
                    │
                    ├─ RPO<小时 且 RTO<数小时 → 温备 + 电子传输
                    │
                    └─ RPO<天 且 RTO<天 → 冷备 / 介质异地存放

八、容灾技术

8.1 容灾技术分层

层级 技术 RPO RTO 复杂度 典型
数据级 存储复制/CDP 0~秒 小时 低 存储阵列复制
数据库级 日志同步/逻辑复制 0~秒 分钟 中 Oracle DG/MySQL主从
应用级 应用切换+流量调度 0~秒 分钟 高 双活应用+全局DNS
业务级 全链路双活 0 ≈0 最高 单元化部署

8.2 数据复制模式

模式 机制 RPO 写延迟 一致性 适用
同步复制 主写成功需备确认 0 高(含RTT) 强一致 同城(<100km)
异步复制 主写成功即返回,备后追 >0 低 最终一致 异地(>300km)
半同步 至少1备确认即返回 ≈0 中 准强一致 同城+异地混合

同步复制:写延迟 = 本地写 + 网络RTT + 备库写。距离受限(RTT<2ms 即 <100km)。
异步复制:写延迟 ≈ 本地写。RPO = 异步延迟 × 写入速率。

8.3 CDP(Continuous Data Protection,持续数据保护)

  • 原理:持续捕获每一次数据变更(IO级/日志级),可恢复到任意时间点。
  • 特点:RPO≈0,可细粒度恢复(秒级回退)。
  • 实现:IO拦截 + 日志持续记录 + 按需回放。
  • 对比传统备份:
维度 传统备份 CDP
RPO 备份间隔(小时~天) ≈0(秒级)
恢复粒度 备份点 任意时间点
存储 全量+增量 日志持续
适用 一般数据 高要求/需回退到任意点

8.4 数据库级容灾技术

技术 产品 复制方式 特点
Oracle Data Guard Oracle 同步/异步/最大可用 主备切换、Fast-Start Failover
MySQL 主从复制 MySQL 异步/半同步 binlog 复制,MHA/MGR高可用
PostgreSQL 流复制 PG 同步/异步 WAL 日志流复制
分布式数据库 TiDB/CockroachDB Raft/Paxos 多副本自动容灾

九、集群高可用

9.1 Quorum(法定人数/多数派)

Quorum = ⌈(N+1)/2⌉(N个节点中多数派的最少节点数)

节点数N Quorum 容忍故障数 说明
1 1 0 无冗余
2 2 0 2节点无法容忍任何故障(需仲裁)
3 2 1 最小高可用集群
5 3 2 推荐生产配置
7 4 3 大规模

关键结论:

  • 2节点集群无法实现自动多数派(任何1节点故障都无法过半),需引入第三方仲裁。
  • 推荐奇数节点(3/5/7),偶数节点不比少一个的奇数节点多容错(4节点和3节点都只容1故障)。

9.2 脑裂(Split-Brain)

定义:集群网络分区导致各部分各自选举出主节点,产生多个"主",数据不一致。

正常:  [主] ←→ [备1] ←→ [备2]     主=1个

脑裂:  [主] ←✗→ [备1] ←→ [备2]
         主        新主(备1被选为主)
         ↓              ↓
        各自写入 → 数据冲突!

危害:双主写入 → 数据冲突/丢失/不一致,是最严重的集群故障。

9.3 脑裂预防

方法 原理 适用
Quorum 多数派 少数派自动降级,不提供服务 3/5/7节点集群
仲裁节点(Witness) 引入轻量第三方仲裁 2节点集群
共享存储/仲裁盘 抢占共享资源者为主 共享存储集群
Fencing/STONITH 强制隔离/关机故障节点 集群HA(Pacemaker/Corosync)
租约(Lease) 主节点定期续租,超时失效 分布式系统

9.4 Fencing 与 STONITH

概念 全称 含义
Fencing 隔离 将故障节点从集群隔离,防止其继续操作
STONITH Shoot The Other Node In The Head 强制关机/重启故障节点

STONITH 是 Fencing 的极端形式:直接物理隔离(断电/重启),确保故障节点不再写入共享存储。

9.5 典型集群高可用组件

组件 角色 典型产品
心跳检测 故障发现 Heartbeat / Corosync
资源管理 资源切换/迁移 Pacemaker / Keepalived
仲裁 防脑裂 Witness / SBD / Disk Witness
VIP管理 虚拟IP漂移 VRRP / Keepalived
负载均衡 流量分发 LVS / HAProxy / Nginx

十、稳定性防护(高可用第一道防线)

10.1 限流(Rate Limiting)

算法 原理 特点 适用
固定计数器 单位时间计数 简单,临界点突刺 低精度
滑动窗口 时间窗口内计数 平滑,无突刺 通用
漏桶(Leaky Bucket) 固定速率出水 严格平滑,不允许突发 严格限速
令牌桶(Token Bucket) 固定速率发令牌 允许突发(桶满可攒) API网关(主流)
分布式限流 Redis+Lua/Sentinel 集群级限流 微服务

漏桶 vs 令牌桶:

  • 漏桶:以固定速率处理请求,不允许突发(多余请求排队或丢弃)。
  • 令牌桶:以固定速率生成令牌,允许突发(桶中令牌可积累)。
  • 令牌桶更灵活,是API网关的主流选择。

10.2 熔断(Circuit Breaker)

三态模型:

    Closed(正常) ──失败率超阈值──→ Open(熔断)
         ↑                            │
         │                        等待超时
         │                            ↓
    Half-Open(半开) ←──试探请求─── 探测
         │
         │试探成功 → Closed
         │试探失败 → Open
状态 行为
Closed 正常放行请求,统计失败率
Open 直接拒绝/返回降级响应,不调用后端
Half-Open 放行少量试探请求,成功→Closed,失败→Open

熔断 vs 限流:限流是"控制总量",熔断是"保护下游不被压垮"。熔断器在下游故障时快速失败,避免级联雪崩。

10.3 降级(Degradation)

类型 说明 示例
返回默认值 用兜底数据替代 推荐列表失败→返回热门列表
读降级 读不到则返回缓存/静态 详情页读DB失败→读缓存
写降级 异步写/先记日志 日志先写本地,异步同步
功能降级 关闭非核心功能 大促时关闭评论/推荐
页面降级 静态化/简化 动态页→静态页

10.4 隔离(Isolation)

方式 原理 适用
线程池隔离 不同服务用不同线程池 防止一个服务拖垮全部
信号量隔离 限制并发数 轻量级/快速调用
舱壁模式(Bulkhead) 资源分区隔离 微服务/船舱隔离思想
实例隔离 不同租户/业务独立实例 多租户

10.5 超时与重试

策略 建议
超时 必须设置,避免无限等待;级联超时应逐层递减
重试 幂等操作才可重试;限制重试次数(通常≤3)
退避 指数退避 + 抖动,避免重试风暴
重试风暴 上游重试×下游重试 → 请求放大,需熔断兜底

10.6 背压(Backpressure)

  • 定义:下游处理不过来时,向上游施加"反压力",让上游降速。
  • 机制:有界缓冲队列满 → 阻塞/丢弃/通知上游。
  • 适用:流处理/消息队列/响应式编程。

10.7 雪崩效应与防护链

服务A → 服务B → 服务C
         ↓ C故障
      B等待超时 → 线程耗尽 → B故障
         ↓
      A等待超时 → 线程耗尽 → A故障 → 雪崩!

防护链:超时(防无限等待) → 限流(防过载) → 熔断(防级联) → 降级(保核心) → 隔离(防扩散)

十一、云原生高可用

11.1 多 AZ / 多 Region

概念 含义 故障域
AZ(Available Zone) 可用区,独立电力/网络/故障域 单AZ故障
Region 地域,包含多个AZ 单Region故障(大灾难)
多AZ部署 跨AZ分布副本 容忍单AZ故障
多Region部署 跨Region部署 容忍单Region故障(异地灾备)

K8s 拓扑分布约束:topologySpreadConstraints 确保Pod均匀分布在多个AZ。

11.2 健康检查(K8s Probe)

Probe类型 作用 失败行为
Liveness 存活检查 重启容器
Readiness 就绪检查 从Service Endpoints摘除(不接流量)
Startup 启动检查 启动期间暂停Liveness检查

Liveness vs Readiness:

  • Liveness 失败 → 重启(解决死锁/僵尸状态)。
  • Readiness 失败 → 摘除流量(不重启,等依赖恢复)。
  • 不要用 Liveness 做依赖检查(会导致级联重启)!

11.3 自愈机制

机制 触发条件 行为
容器重启 Liveness失败 重启容器(重启策略Always/OnFailure)
Pod重建 节点故障 调度器在其他节点重建Pod
节点驱逐 资源不足/不健康 驱逐Pod到其他节点
滚动更新 镜像更新 逐步替换,零停机(配合Readiness)
自动伸缩 负载变化 HPA扩缩Pod数量

11.4 弹性伸缩

类型 全称 调整对象 依据
HPA Horizontal Pod Autoscaler Pod数量 CPU/内存/自定义指标
VPA Vertical Pod Autoscaler Pod资源配额 历史用量
CA Cluster Autoscaler 节点数量 Pod Pending(调度不上)

HPA vs VPA:HPA(水平扩容)是主流,VPA(垂直扩容)需重启Pod,两者一般不同时使用。

11.5 调度策略与高可用

策略 作用 示例
反亲和(Anti-Affinity) Pod分散到不同节点/AZ 避免单节点故障影响全部副本
PodDisruptionBudget 限制自愿驱逐的Pod数 保证至少有X个可用
拓扑分布约束 均匀分布到拓扑域 跨AZ均匀分布
节点亲和 指定节点/标签调度 关键服务调度到高配节点

十二、选型比较(横向对比表)

12.1 主备 vs 双活

维度 主备(Active-Standby) 双活(Active-Active)
资源利用率 ~50%(备机闲置) ~100%
RTO 秒~分钟(需切换) ≈0(无切换)
RPO 取决于复制方式 0(同步)
实现难度 中 高(写冲突/全局路由)
成本 中 高
适用 一般核心业务 金融核心/极关键

12.2 同步 vs 异步复制

维度 同步复制 异步复制
RPO 0 >0
写延迟 高(含网络RTT) 低(本地写即返回)
距离限制 <100km(RTT<2ms) 无限制
一致性 强一致 最终一致
适用 同城 异地

12.3 同城 vs 异地灾备

维度 同城灾备 异地灾备
距离 <100km >300km
防范灾难 设备/机房故障 地震/洪水/大面积停电
RPO 0(同步) >0(异步)
RTO 分钟级 小时级
复制方式 同步 异步

12.4 多副本 vs 纠删码

维度 3副本 EC(4,2)
存储开销 3x 1.5x
容错 2块 2块
读写性能 高 中(需编解码)
适用 热数据 冷数据/归档

12.5 限流算法对比

算法 突发 平滑 实现 适用
固定计数器 有(临界突刺) 否 最简 低精度
滑动窗口 弱 是 中 通用
漏桶 无 严格 中 严格限速
令牌桶 有(可攒令牌) 是 中 API网关(主流)

12.6 灾备等级 vs RPO/RTO 速查

GB/T级别 RTO RPO 本质
1级 天 天 介质异地
2级 天 天 备用场地
3级 天 小时~天 电子传输
4级 小时 分钟~小时 完整设备
5级 小时 分钟 实时传输
6级 ≈0 0 远程集群双活

十三、易混陷阱(易混淆点辨析)

13.1 RPO ≠ RTO

RPO RTO
方向 过去(丢多少数据) 未来(多久恢复)
单位 时间/数据量 时间
=0含义 不丢数据 不中断
决定因素 复制方式(同步/异步) 切换速度(自动/手动)

陷阱:RPO=0 不代表 RTO=0。同步复制保证不丢数据(RPO=0),但主备切换仍需时间(RTO>0)。只有双活才能 RTO≈0。

13.2 可用性 ≠ 可靠性

可用性(A) 可靠性®
关注 能用的时间比例 规定时间内不出故障
公式 MTBF/(MTBF+MTTR) e^(-λt)
含修复 是(含MTTR) 否(到首次故障)
关系 频繁故障+快速恢复 → A高R低 —

13.3 冷备 / 温备 / 热备边界

冷备 温备 热备
备机运行 否 是(不接流量) 是(接流量或随时切)
数据同步 无 定期 实时
RTO 小时~天 分钟~小时 秒~分钟
RPO 可能全丢 同步周期增量 ≈0

陷阱:温备和热备的区别在于"数据是否实时同步",而非"是否运行"。温备可能运行但不实时同步。

13.4 串联 vs 并联可靠性

串联 并联
公式 R1×R2×…×Rn 1-(1-R1)(1-R2)…(1-Rn)
趋势 越串越低 越并越高
物理含义 任一故障全停 全部故障才停
典型 单链路依赖 冗余备份

陷阱:串联系统增加部件会降低可靠性;并联系统增加部件会提高可靠性。

13.5 2节点集群的脑裂陷阱

陷阱:2节点集群无法用多数派防脑裂(任何1节点故障都不过半)。必须引入第三方仲裁(Witness节点/仲裁盘/仲裁服务)。

13.6 N+1 vs 2N

N+1 2N
备份数 1个共享 N个独立
容错 备份自身故障则全失效 每节点独立备份
成本 低 高(翻倍)

13.7 Liveness vs Readiness Probe

Liveness失败 Readiness失败
行为 重启容器 摘除流量(不重启)
适用 死锁/僵尸 依赖未就绪/过载
陷阱 用Liveness检查依赖→级联重启 —

13.8 漏桶 vs 令牌桶

漏桶 令牌桶
突发 不允许 允许(攒令牌)
速率 严格固定 平均固定,可突发
适用 严格限速 API网关(主流)

13.9 灾备级别 RPO=0 仅6级

陷阱:GB/T 20988 中只有6级保证 RPO=0(数据零丢失)。5级 RPO 是"0~数分钟",不是严格0。

13.10 可用度年停机时间换算

陷阱:可用度 99.95% 的年停机时间不是 5分钟,而是:
(1 - 0.9995) × 365 × 24 × 60 = 0.0005 × 525600 = 262.8 分钟 ≈ 4.38 小时
99.95% 介于3个9(8.76h)和4个9(52.6min)之间。

13.11 MTTF ≠ MTBF

MTTF MTBF
适用 不可修复系统 可修复系统
含义 到首次故障的时间 两次故障间的间隔
故障后 报废/更换 修复后继续用
关系 MTBF = MTTF + MTTR —

陷阱:不可修复系统只有 MTTF,没有 MTBF(坏了不修,谈不上"故障间隔")。可修复系统才有 MTBF 和 MTTR。
关系:MTBF = MTTF + MTTR(严格定义下,一个完整周期 = 运行 + 修复)。

13.12 主动冗余 ≠ 被动冗余(可靠性公式不同)

主动冗余 被动冗余
公式 R = 1-∏(1-Ri) R = R主+(1-R主)×R切换×R备
含切换率 否 是
切换失败 不存在(都在运行) 系统失效

陷阱:被动冗余的可靠性公式含切换成功率 R切换,主动冗余不含。若忽略 R切换,会把被动冗余的可靠性算高。
结论:切换完全可靠(R切换=1)时两者可靠性相同;实际中 R切换<1,故主动冗余可靠性 ≥ 被动冗余。

13.13 可用性公式的两种写法

陷阱:A = MTBF/(MTBF+MTTR) 和 A = MTTF/MTBF 看似不同,本质等价。

  • 前者:MTBF 定义为纯运行时间(软考常用)
  • 后者:MTBF = MTTF+MTTR 定义为完整周期(严格定义)
  • 软考答题用 A = MTBF/(MTBF+MTTR),除非题目给 MTTF。

十四、避坑实践(生产实践注意事项)

14.1 高可用设计原则

  1. 消除单点:无单点故障(SPOF),每层冗余。
  2. 故障隔离:一个故障不扩散(舱壁隔离)。
  3. 快速失败:超时+熔断,避免级联雪崩。
  4. 优雅降级:保核心、弃边缘。
  5. 自动恢复:自愈>人工干预。
  6. 设计为失败:假设一切都会失败(Design for Failure)。

14.2 灾备演练必做

  • 定期演练(至少每年1次全量切换)。
  • 演练不是测试:验证的是流程/人员/文档,不只是技术。
  • 真实切换:不要只做"模拟",要真切换流量。
  • 回退预案:每次切换都要有回退方案。

14.3 常见避坑清单

坑 后果 对策
2节点无仲裁 脑裂/数据不一致 加Witness/用3节点
Liveness查依赖 级联重启雪崩 用Readiness查依赖
无超时设置 线程耗尽/雪崩 每层设超时,递减
同步复制跨异地 写延迟极高 同城同步+异地异步
只做主备不做演练 灾备切不过去 定期真实演练
限流只做单机 集群过载 分布式限流(Redis+Lua)
重试无退避 重试风暴 指数退避+抖动+熔断
RAID5用大盘 重建时间极长/双盘故障 用RAID10或RAID6
DNS切换TTL过长 切换延迟大 短TTL(60s)+预降TTL

14.4 两地三中心避坑

  • 同城距离:确保 <100km,RTT <2ms,否则同步复制延迟过大。
  • 异地不兜底同城:异地是防范大灾难,同城故障不应切异地(RPO太大)。
  • 数据一致性:同城强一致,异地最终一致,切换时需数据校验。
  • 网络带宽:异步复制带宽要覆盖峰值写入速率,否则RPO持续增大。

十五、计算题型

题型一:串并联可用度计算

【例1】 某系统由两个子系统串联组成,可用度分别为 0.99 和 0.98,求系统可用度。

解:A=A1×A2=0.99×0.98=0.9702A = A_1 \times A_2 = 0.99 \times 0.98 = 0.9702,即 97.02%。

【例2】 某系统由两个子系统并联组成,可用度分别为 0.9 和 0.8,求系统可用度。

解:A=1−(1−0.9)(1−0.8)=1−0.1×0.2=1−0.02=0.98A = 1 - (1-0.9)(1-0.8) = 1 - 0.1 \times 0.2 = 1 - 0.02 = 0.98,即 98%。

【例3】 三个相同部件并联,单部件可靠度 R=0.9,求系统可靠度。

解:R=1−(1−0.9)3=1−0.001=0.999R = 1 - (1-0.9)^3 = 1 - 0.001 = 0.999。

题型二:混联系统可靠度

【例4】 系统结构:两个并联(R=0.9)的子系统,再串联一个 R=0.95 的部件,求系统可靠度。

解:

  1. 并联部分:R并=1−(1−0.9)2=1−0.01=0.99R_{并} = 1 - (1-0.9)^2 = 1 - 0.01 = 0.99
  2. 串联:R系统=0.99×0.95=0.9405R_{系统} = 0.99 \times 0.95 = 0.9405

题型三:k/n 表决系统

【例5】 3个相同部件组成 2/3 表决系统,单部件可靠度 R=0.9,求系统可靠度。

解:

R2/3=(32)(0.9)2(0.1)1+(33)(0.9)3(0.1)0=3×0.081+1×0.729=0.243+0.729=0.972R_{2/3} = \binom{3}{2}(0.9)^2(0.1)^1 + \binom{3}{3}(0.9)^3(0.1)^0 = 3 \times 0.081 + 1 \times 0.729 = 0.243 + 0.729 = 0.972

题型四:MTBF/MTTR 可用度计算

【例6】 某系统 MTBF=1000小时,MTTR=10小时,求可用度。

解:A=MTBFMTBF+MTTR=10001000+10=10001010≈0.9901A = \frac{MTBF}{MTBF + MTTR} = \frac{1000}{1000+10} = \frac{1000}{1010} \approx 0.9901,即 99.01%(约3个9)。

【例7】 要求系统可用度达到 99.99%(4个9),MTTR=1小时,求最低 MTBF。

解:

0.9999=MTBFMTBF+10.9999 = \frac{MTBF}{MTBF + 1}

0.9999×(MTBF+1)=MTBF0.9999 \times (MTBF + 1) = MTBF

0.9999×MTBF+0.9999=MTBF0.9999 \times MTBF + 0.9999 = MTBF

0.9999=MTBF×(1−0.9999)=0.0001×MTBF0.9999 = MTBF \times (1 - 0.9999) = 0.0001 \times MTBF

MTBF=0.99990.0001=9999 小时MTBF = \frac{0.9999}{0.0001} = 9999 \text{ 小时}

题型五:可用度→年停机时间

【例8】 某系统可用度 99.95%,求年停机时间。

解:(1−0.9995)×365×24×60=0.0005×525600=262.8(1 - 0.9995) \times 365 \times 24 \times 60 = 0.0005 \times 525600 = 262.8 分钟 ≈ 4.38 小时。

题型六:并联系统年停机时间

【例9】 两台服务器并联,单台年可用度 99%(年停机 3.65天),求系统年停机时间。

解:

A=1−(1−0.99)2=1−0.0001=0.9999A = 1 - (1-0.99)^2 = 1 - 0.0001 = 0.9999

年停机 = (1−0.9999)×525600=0.0001×525600=52.56(1-0.9999) \times 525600 = 0.0001 \times 525600 = 52.56 分钟 ≈ 52.6 分钟(4个9)。

结论:两个 99%(3个9) 并联 → 99.99%(4个9)。每并联一组,约多一个9。

题型七:RPO 计算(异步复制)

【例10】 异步复制延迟 5 秒,写入速率 1000 条/秒,求 RPO(数据量)。

解:RPO=5×1000=5000RPO = 5 \times 1000 = 5000 条数据。

【例11】 异步复制延迟 10 秒,求 RPO(时间)。

解:RPO = 10 秒(最多丢失 10 秒的数据)。

题型八:Quorum 容错计算

【例12】 5节点 Raft 集群,求 Quorum 和容忍故障数。

解:

  • Quorum = ⌈(5+1)/2⌉ = 3
  • 容忍故障 = 5 - 3 = 2(可挂2个节点)

【例13】 要求容忍 3 个节点故障,最少需要多少节点?

解:容忍 f 个故障需 n ≥ 2f+1 = 2×3+1 = 7 个节点。

题型九:EC 存储开销计算

【例14】 EC(6,3) 编码,原始数据 600GB,求实际存储开销。

解:

  • 数据块 6 个,校验块 3 个,共 9 个块。
  • 每块 = 600/6 = 100GB
  • 总存储 = 9 × 100 = 900GB
  • 存储开销比 = 9/6 = 1.5x
  • 容忍任意 3 块丢失。

题型十:RAID 可用容量计算

【例15】 6块 2TB 磁盘,分别求 RAID 0/1/5/6/10 的可用容量。

解:

RAID 可用容量 说明
RAID 0 6×2=12TB 全部可用,不容错
RAID 1 6×2/2=6TB 50%(镜像)
RAID 5 (6-1)×2=10TB 1盘校验
RAID 6 (6-2)×2=8TB 2盘校验
RAID 10 6×2/2=6TB 先镜像再条带,50%

题型十一:WNR Quorum 一致性判断

【例16】 N=5, W=3, R=2,判断是否强一致。

解:W + R = 3 + 2 = 5 = N,W+R > N 不成立(等于N)。

  • 严格来说 W+R > N 才保证强一致,W+R = N 是边界情况,可能读到旧数据。
  • 结论:不保证强一致(需 W+R > N,即至少 6)。

修正:常见教材中 W+R > N 为强一致条件。W+R = N 时读写可能无交集(恰好不重叠),不保证强一致。应改为 W=3, R=3(W+R=6>5)。

题型十二:灾备级别判断

【例17】 某系统 RTO=30分钟,RPO=0,对应 GB/T 20988 哪个级别?

解:RPO=0 且 RTO 在分钟级 → 6级(数据零丢失及远程集群)。

【例18】 某系统 RTO=4小时,RPO=30分钟,对应哪个级别?

解:RTO 在 2~8 小时,RPO 在分钟~小时 → 4级(电子传输及完整设备)。

题型十三:MTTF / MTBF / MTTR 关系换算

【例19】 某可修复系统 MTTF=9990小时,MTTR=10小时,求 MTBF(严格定义)和可用度。

解:

  • 严格定义:MTBF = MTTF + MTTR = 9990 + 10 = 10000 小时
  • 可用度:A = MTTF / MTBF = 9990 / 10000 = 0.999(3个9)
  • 用软考公式验证:A = MTBF’ / (MTBF’ + MTTR),其中 MTBF’=9990(纯运行)
    A = 9990 / (9990+10) = 9990/10000 = 0.999 ✓

【例20】 某不可修复设备 MTTF=5000小时,求运行 1000 小时的可靠性。

解:

  • λ = 1/MTTF = 1/5000 = 0.0002
  • R(1000) = e^(-λt) = e^(-0.0002×1000) = e^(-0.2) ≈ 0.8187

【例21】 已知系统可用度 A=0.999,MTTR=2小时,用软考公式求 MTBF。

解:

0.999=MTBFMTBF+20.999 = \frac{MTBF}{MTBF + 2}

0.999×(MTBF+2)=MTBF0.999 \times (MTBF + 2) = MTBF

0.999×MTBF+1.998=MTBF0.999 \times MTBF + 1.998 = MTBF

1.998=0.001×MTBF1.998 = 0.001 \times MTBF

MTBF=1.9980.001=1998 小时MTBF = \frac{1.998}{0.001} = 1998 \text{ 小时}

验证:A = 1998/(1998+2) = 1998/2000 = 0.999 ✓

题型十四:主动冗余 vs 被动冗余可靠性对比

【例22】 两个相同部件 R=0.9,分别用主动冗余(并联)和被动冗余(主备,切换成功率 R切换=0.95)实现,求系统可靠性。

解:

  • 主动冗余(并联):R = 1-(1-0.9)² = 1-0.01 = 0.99
  • 被动冗余(主备):R = R主 + (1-R主)×R切换×R备
    R = 0.9 + (1-0.9)×0.95×0.9 = 0.9 + 0.1×0.95×0.9 = 0.9 + 0.0855 = 0.9855

结论:主动冗余(0.99) > 被动冗余(0.9855),因为被动冗余存在切换失败风险。
若切换完全可靠(R切换=1):R被动 = 0.9+0.1×1×0.9 = 0.99 = R主动(两者相同)。

【例23】 主备系统,主 R=0.95,备 R=0.9,切换成功率 R切换=0.98,求系统可靠性。若改为主动冗余(并联)呢?

解:

  • 被动冗余:R = 0.95 + (1-0.95)×0.98×0.9 = 0.95 + 0.05×0.98×0.9 = 0.95 + 0.0441 = 0.9941
  • 主动冗余(并联):R = 1-(1-0.95)(1-0.9) = 1-0.05×0.1 = 1-0.005 = 0.995

结论:主动冗余(0.995) > 被动冗余(0.9941),差异来自切换成功率。


十六、关联图(知识点关系图)

                    ┌─────────────┐
                    │  业务连续性  │
                    │   (BCM)     │
                    └──────┬──────┘
                           │
              ┌────────────┼────────────┐
              ↓            ↓            ↓
        ┌─────────┐  ┌─────────┐  ┌─────────┐
        │  BIA    │  │  BCP    │  │  DRP    │
        │(分析)   │  │(连续性) │  │(恢复)   │
        └────┬────┘  └─────────┘  └────┬────┘
             │                         │
             ↓                         ↓
      ┌────────────┐            ┌──────────────┐
      │ RTO / RPO  │            │  灾备架构    │
      │ (量化目标) │            │              │
      └─────┬──────┘            └──────┬───────┘
            │                          │
            │    ┌─────────────────────┤
            ↓    ↓                     ↓
      ┌──────────────┐         ┌──────────────┐
      │  可用性理论   │         │  容灾技术    │
      │ MTBF/MTTR    │         │ 同步/异步    │
      │ 串/并联      │         │ CDP/日志复制 │
      └──────┬───────┘         └──────────────┘
             │
             ↓
      ┌──────────────┐
      │  冗余设计    │←── 集群高可用(Quorum/脑裂)
      │ 主备/双活    │
      │ N+1/2N      │
      └──────┬───────┘
             │
    ┌────────┼────────┐
    ↓        ↓        ↓
┌────────┐┌────────┐┌────────────┐
│负载均衡││数据可靠││稳定性防护   │
│DNS/LB  ││副本/EC ││限流/熔断/降级│
│LVS/Nginx││RAID    ││隔离/超时    │
└────────┘└────────┘└────────────┘
                          │
                          ↓
                   ┌────────────┐
                   │云原生高可用 │
                   │多AZ/多Region│
                   │Probe/自愈   │
                   └────────────┘

核心关联:

  • RPO/RTO ← BIA分析 → 决定 → 灾备架构选型 → 决定 → 容灾技术 → 依赖 → 复制方式(同步/异步)
  • 可用性计算 → 评估 → 冗余设计 → 依赖 → 集群高可用(Quorum)
  • 稳定性防护 → 保护 → 负载均衡后端 → 配合 → 健康检查 → 触发 → 自愈/切换

十七、双轨口诀

17.1 可用性公式

顺口溜:

无故障时间比总时间,MTBF除以总和;
串联相乘越串越低,并联一减各一相乘。

谐音:

A = M/(M+R) → “阿妹(M)除以妹(M)加阿®”
串联 R1×R2 → “串乘”
并联 1-(1-R1)(1-R2) → “并减各补乘”

17.2 可用度等级(几个9)

顺口溜:

两个九,停三天半;三个九,停八小时半;
四个九,停一小时不到(52分钟);五个九,停五分钟;
六个九,停半分钟。每多一个九,缩小十倍。

谐音:

99→3.65天,999→8.76h,9999→52.6min,99999→5.26min,999999→31.5s
“二三天,三八半,四五二,五五二,六三一”
(2个9→3天,3个9→8小时半,4个9→52分,5个9→5分,6个9→31秒)

17.3 RPO 与 RTO

顺口溜:

RPO 往回看,丢多少数据;
RTO 往前看,多久能恢复;
零丢靠同步,零断靠双活。

谐音:

RPO → “日抛” → 抛掉的数据(过去)
RTO → “日透” → 透支的时间(未来,恢复用时)
RPO=0 同步复制,RTO=0 双活无切换

17.4 灾备六级(GB/T 20988)

顺口溜:

一级搬盘,二级搬机,三级传数据;
四级设备全,五级实时传,六级零丢双活全。

谐音:

1盘2场3传4备5实6零
→ “一盘二场三传四备五实六零”
→ 联想:“一盘散沙,二场备用,三传电子,四备就绪,五实实时,六零零丢”

17.5 冷温热备

顺口溜:

冷备关机不同步,温备运行定期更;
热备实时随时切,双活同时都干活。

谐音:

冷→“困”(关机) 温→“稳”(运行不接活) 热→“活”(实时) 双→“双”(都干)

17.6 串并联方向

顺口溜:

串联相乘越来越低,并联互补越来越高;
先并后串先算并,先串后并先算串。

谐音:

串→“穿”(穿透相乘) 并→“并”(合并互补)
“穿乘并补” → 串联穿过去相乘,并联补上(1-各一)再被1减

17.7 Quorum 与脑裂

顺口溜:

多数派过半才能活,奇数节点最稳妥;
两节点必加仲裁,脑裂双主要隔离。

谐音:

Quorum → “阔润” → 阔过半才润(活)
脑裂 → “闹裂” → 闹分裂要隔离
2f+1 → “二夫加一” → 容f故障需2f+1节点

17.8 稳定性防护五件套

顺口溜:

限流控总量,熔断保下游;
降级保核心,隔离防扩散;
超时防等待,五件防雪崩。

谐音:

限→“线”(画线控制) 熔→“融”(融化断开) 降→“降”(降落兜底) 隔→“格”(格开) 超→“超”(超时切断)
“线融降格超” → 联想"仙人融化降格超度"(限熔降隔超)

17.9 RAID 级别

顺口溜:

零条带不容错,一镜像半容量;
五条带一校验,六条带双校验;
十先镜后条带,生产首选十。

谐音:

0→条 1→镜 5→校 6→双 10→镜条
“零条一镜五校六双十镜条”
→ 联想"零跳一惊五笑六双十惊跳"

17.10 两地三中心

顺口溜:

同城双活同步零丢,异地灾备异步兜底;
两地三中心最经典,同城近异地远。

谐音:

同城→“同” 异地→“异” → “同零异兜”(同城RPO=0,异地兜底)
两地三中心 → “两三” → 联想"两山(三中心)之间"

17.11 MTTF / MTBF / MTTR 三者关系

顺口溜:

MTTF 到首坏,不可修才用它;
MTBF 间隔间,可修系统两故障;
MTTR 修复时,三者关系加起来;
MTBF 等于 TF 加 TR,可用 TF 比 BF。

谐音:

MTTF → “妹踢夫” → 踢到夫君首次倒(首次故障,不可修)
MTBF → “妹踢比夫” → 两次踢之间比间隔(故障间隔,可修)
MTTR → “妹踢兔” → 踢完去修兔(修复时间)
关系:BF = TF + TR → “比夫 = 踢夫 + 踢兔” → 间隔 = 运行 + 修复
A = TF/BF → “阿 = 踢夫/比夫” → 可用 = 运行/周期

17.12 主动冗余 vs 被动冗余

顺口溜:

主动冗余全在线,并联公式不算切换;
被动冗余待命等,主坏才切含切换率;
切换若能百分百,两者可靠就一样;
实际切换有风险,主动可靠大等于被动。

谐音:

主动→“主” 并联→“并” → “主并”(主动=并联,都在跑)
被动→“被” 主备→“备” → “被备”(被动=备用,等着接)
主动公式:1-∏(1-Ri) → “一减补乘”(不含切换)
被动公式:R主+(1-R主)×R切×R备 → “主加补切备”(含切换率)
“主并不切,被备要切” → 主动并联不切换,被动备用要切换


十八、速记总表

18.1 核心公式速查

公式 表达式 用途
可用度(软考) A = MTBF/(MTBF+MTTR) 可用性计算(MTBF为纯运行时间)
可用度(严格) A = MTTF/MTBF MTBF=MTTF+MTTR(完整周期)
三者关系 MTBF = MTTF + MTTR 可修复系统完整周期
可靠性 R(t) = e^(-λt), λ=1/MTBF 规定时间不故障概率
串联 R = ∏Ri 串联可靠度
并联(主动冗余) R = 1-∏(1-Ri) 并联/主动冗余可靠度
被动冗余(主备) R = R主+(1-R主)×R切换×R备 含切换成功率
k/n表决 Σ C(n,i)·R^i·(1-R)^(n-i), i=k~n 表决系统
年停机 (1-A)×525600 分钟 可用度→停机时间
Quorum ⌈(N+1)/2⌉ 多数派
容错节点 f = (N-1)/2 N节点容错数
最少节点 N = 2f+1 容f故障最少节点
EC开销 (k+m)/k 纠删码存储比

18.2 RPO/RTO 速查

方案 RPO RTO 成本
冷备 全丢 天 低
温备 周期增量 小时 中低
热备 ≈0 分钟 中高
同城双活 0 分钟 高
双活(主主) 0 ≈0 最高
异地灾备(异步) 秒~分 小时 中
两地三中心 0(同城) 分钟 高

18.3 灾备六级速查

级 RTO RPO 关键词
1 天 天 介质
2 天 天 场地
3 天 时~天 电子传
4 时 分~时 设备全
5 时 分 实时传
6 ≈0 0 零丢双活

18.4 冗余配置速查

模式 含义 容错
主动冗余 全部同时运行(并联) R=1-∏(1-Ri),不含切换
被动冗余 主运行备待命(主备) R=R主+(1-R主)×R切×R备
N+1 N工作+1共享备 备好则容1
2N 每节点独立备 容各1
2N+1 2N+仲裁 防脑裂
3副本 3份数据 容2
EC(k,m) k数据+m校验 容m

18.5 稳定性防护速查

手段 作用 关键参数
限流 控总量 QPS阈值
熔断 保下游 失败率阈值/恢复时间
降级 保核心 降级策略/兜底
隔离 防扩散 线程池/信号量
超时 防等待 超时时间
重试 容偶发 次数/退避
背压 控上游 队列容量

18.6 K8s Probe 速查

Probe 失败行为 用途
Liveness 重启 死锁/僵尸
Readiness 摘流量 依赖未就绪
Startup 暂停Liveness 慢启动

18.7 常用数字速记

数字 含义
525600 一年分钟数(365×24×60)
8.76h 3个9年停机
52.6min 4个9年停机
5.26min 5个9年停机
100km 同城灾备距离上限
2ms 同城同步RTT上限
300km 异地灾备距离下限
2f+1 容f故障最少节点
3节点 最小HA集群

十九、背诵路线建议

第一阶段:核心概念(1~2天)

  1. RPO/RTO 定义 → 方向(过去/未来)→ 口诀"日抛日透"
  2. 可用度公式 → A=MTBF/(MTBF+MTTR) → 年停机时间换算
  3. 几个9 → 2~6个9对应停机时间 → “二三天三八半四五二五五二六三一”
  4. 冷温热备 → RTO/RPO递减 → “冷困温稳热活双”

第二阶段:灾备体系(2~3天)

  1. GB/T 20988 六级 → RTO/RPO对应 → “1盘2场3传4备5实6零”
  2. 灾备架构 → 同城双活/异地灾备/两地三中心/三地五中心
  3. 容灾技术分层 → 数据级→数据库级→应用级→业务级
  4. 复制模式 → 同步(RPO=0)/异步(RPO>0)/半同步

第三阶段:可用性计算(2~3天)

  1. 串联 → R=∏Ri → “穿乘”
  2. 并联 → R=1-∏(1-Ri) → “并减补乘”
  3. 混联 → 先并后串/先串后并
  4. k/n表决 → 组合数公式 → 2/3表决典型
  5. 刷计算题 → 串并联、混联、MTBF/MTTR、年停机

第四阶段:集群与防护(2天)

  1. Quorum → ⌈(N+1)/2⌉ → 2f+1
  2. 脑裂 → 原因/危害/预防 → “闹裂要隔离”
  3. 稳定性五件套 → 限流/熔断/降级/隔离/超时 → “线融降格超”
  4. 限流算法 → 漏桶vs令牌桶

第五阶段:数据可靠与云原生(2天)

  1. RAID → 0/1/5/6/10 → “零条一镜五校六双十镜条”
  2. 多副本vs EC → 存储开销/容错对比
  3. WNR Quorum → W+R>N强一致
  4. K8s Probe → Liveness/Readiness/Startup
  5. 多AZ/多Region → 故障域隔离

第六阶段:综合与冲刺(1~2天)

  1. 选型对比表 → 主备vs双活、同步vs异步、同城vs异地
  2. 易混陷阱 → 10大陷阱过一遍
  3. 速记总表 → 考前速查
  4. 口诀总复习 → 所有顺口溜+谐音

文档说明:本文档覆盖软考系统架构设计师「高可用与业务连续性」完整知识体系,按12章节结构模板组织,包含理论基石、冗余设计、负载均衡、数据可靠性、BCM、灾备等级、容灾技术、集群高可用、稳定性防护、云原生高可用十大核心模块,以及选型比较、易混陷阱、避坑实践、计算题型、关联图、双轨口诀、速记总表、背诵路线。重点关注选型权衡、易混淆避坑、计算题型三维度。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。