可用性指标与 SLA
可用性是系统设计的北极星。面试主线:可用性怎么算、几个 9 什么概念、故障怎么分级。
可用性公式
可用性 = 正常运行时间 / 总时间
| 可用性 | 年宕机时间 | 含义 |
|---|---|---|
| 99%(两个 9) | 87.6 小时 | 允许每周宕机约 1.7 小时 |
| 99.9%(三个 9) | 8.76 小时 | 常规商业系统目标 |
| 99.99%(四个 9) | 52.6 分钟 | 金融/核心系统 |
| 99.999%(五个 9) | 5.26 分钟 | 电信级,成本极高 |
面试要点:每多一个 9,成本涨一个量级(冗余、运维、演练投入)。设计时先定目标(几个 9),再决定投入。
MTTR 与 MTBF
可用性 = MTBF / (MTBF + MTTR)
| 指标 | 含义 | 优化方向 |
|---|---|---|
| MTBF | 平均无故障时间 | 越长越好:质量、冗余 |
| MTTR | 平均恢复时间 | 越短越好:监控、自动恢复、预案 |
两个 9 之间的差距靠 MTTR 拉:故障不可完全避免,但恢复快 = 可用性高。所以故障转移、自动重启、快速回滚都是可用性工程的重点。
SLA 与 SLO
- SLO(Service Level Objective):自己定的目标,如“P99 延迟 < 200ms,可用性 99.9%”
- SLA(Service Level Agreement):对外承诺,未达成要赔偿
- 关系:SLA 基于 SLO,SLO 定得比 SLA 严(留缓冲)
- 面试话术:SLO 是工程目标,SLA 是商业承诺,先有 SLO 才有 SLA
故障分级
| 级别 | 影响 | 响应要求 |
|---|---|---|
| P0 | 核心功能不可用/资损 | 立即响应,全员,分钟级恢复 |
| P1 | 主要功能受损,有替代方案 | 快速响应,小时级恢复 |
| P2 | 局部功能问题,可容忍 | 当日处理 |
| P3 | 小问题/体验问题 | 排期处理 |
分级的意义:资源按级别分配。P0 抢修是最高优先级,P3 不打断主线。面试答“P0 是核心不可用,马上拉群抢修,事后复盘”即可。
面试追问
- 99.9% 一年能宕多久? 约 8.76 小时(52.6 分钟 × 10)。每多一个 9 少一个数量级
- 怎么提高可用性? 两条路:MTBF(冗余、质量)和 MTTR(监控、自动恢复、预案)。MTTR 更容易见效
- SLA 和 SLO 的区别? SLO 是内部目标,SLA 是对外承诺。SLO 比 SLA 严,留缓冲
- 故障分级的意义? 资源按影响分配:P0 抢修优先,P3 排期。避免所有故障都当大事
- 可用性目标怎么定? 按业务成本权衡:核心链路四个 9,外围功能三个 9 够。每个 9 都是成本