系统可靠性
案例分析常出计算题:MTBF、MTTR、可用度;以及冗余/容错设计
一、4 个核心概念 ⭐⭐⭐
可靠性在规定条件和时间内 不发生故障 的能力(关注没坏)
可用性系统 持续提供服务 的能力(关注能用)
可维护性发现故障并修复的难易程度
可生存性在攻击/故障下 关键功能仍可提供 的能力
二、关键指标 ⭐⭐⭐
MTBFMean Time Between Failures · 平均无故障时间 · 越大越好
MTTRMean Time To Repair · 平均修复时间 · 越小越好
MTTFMean Time To Failure · 平均故障前时间(不可修复设备)
可用度公式(必背)
📐 公式
A = MTBF / (MTBF + MTTR)
A 越接近 1 越好。如 MTBF=999h,MTTR=1h → A = 999/1000 = 99.9%
三、可靠性计算(必会) ⭐⭐⭐
串联系统
[R1]──[R2]──[R3] 全部正常才正常
R 串联 = R1 × R2 × R3 × …
只要一个挂,整体挂。可靠性随节点数下降。
并联系统
┌─[R1]─┐ ──┤─[R2]─├── 任意一个正常即可 └─[R3]─┘
R 并联 = 1 − (1 − R1)(1 − R2)(1 − R3) · …
至少一个工作即正常。可靠性随节点数提升。
📝 计算示例
3 个节点 R = 0.9
串联:0.9³ = 0.729
并联:1 − 0.1³ = 0.999
混联(混合)
先把并联部分算出等效 R,再与串联部分相乘。
四、容错与冗余设计 ⭐⭐
冗余分类
- 硬件冗余:多电源、多网卡、双机热备
- 软件冗余:N 版本程序、恢复块
- 时间冗余:重试、重传
- 信息冗余:CRC 校验、海明码、奇偶校验
主动 vs 被动冗余
- 主动冗余(Active):多个副本同时工作,投票出结果(高可靠,高成本)
- 被动冗余(Passive):主备模式,主挂切备(常用,如 MySQL 主从)
容错技术 4 大手段
- 错误检测:校验、心跳、看门狗
- 错误恢复:重试、回滚、切换、降级
- 错误屏蔽:N 版本投票
- 错误预防:负载均衡、监控、限流
五、高可用架构典型设计
- 多机房 / 多活:同城双活、异地灾备、异地多活
- 负载均衡 + 自动故障转移:Nginx + Keepalived(VIP)
- 主从切换:MHA、Sentinel、Cluster
- 限流 + 熔断 + 降级
- 无状态化 + 会话外部存储
- 分布式存储:多副本、纠删码
六、答题模板
题型:如何提升系统可用性 / 可靠性?
三大方向(背):
- 错误预防:充分测试、灰度发布、限流熔断
- 错误检测:心跳、监控告警、健康检查
- 错误恢复:主备切换、自动重启、回滚、降级
结合 冗余:负载均衡集群 + 主从复制 + 多机房 + 异地多活,可达到 99.99% 以上可用度。
题型:某系统由 5 个串联模块组成,每个 R=0.99,求整体可靠性?
R = 0.99⁵ ≈ 0.951(95.1%)
若给关键模块加并联备份(2 个并联):
并联节点 = 1 − (1−0.99)² = 0.9999
整体 = 0.99⁴ × 0.9999 ≈ 0.961
📘 常考补充 · 可靠性 完