可用性

可用性不是某个技术特性,而是一种系统能力 + 组织能力的综合结果


一、可用性的第一性原理(认知地基)

这一节是全文的“地基”,所有后续设计都必须服从这些事实。

1. 不可违背的客观事实

  1. 故障一定会发生

    • 硬件会坏
    • 软件必然有 Bug
    • 网络一定不可靠
    • 人一定会犯错
  2. 网络分区不可避免

    • 分布式系统无法获得全局一致视图
    • 状态判断永远存在不确定性
  3. 状态决策不可能 100% 正确

    • 主备切换、多主选举一定存在误判
    • 所谓“正确”只是概率更高
  4. 可用性是概率,不是确定性

    • 高可用 ≠ 不宕机
    • 高可用 = 快速恢复 + 可控影响
  5. 人是系统的一部分

    • 既是修复者
    • 也是最大的不稳定源

👉 高可用的本质,是与不确定性共存,而不是消灭它


二、核心概念与指标体系(概念澄清)

1. 核心属性区分(避免概念混乱)

概念本质关注点
可靠性(Reliability)持续无故障运行的概率宕机次数
可用性(Availability)系统可被使用的时间比例宕机时长
稳定性(Stability)行为一致性与退化趋势抖动、劣化

可靠性影响可用性,但不等于可用性

2. 核心指标

Availability = MTBF / (MTBF + MTTR)

业务维度:


三、可用性能力分层模型(总架构)

这是对全文的总抽象

L5 组织与治理能力(文化、流程、演练)L4 业务连续性能力(RTO / RPO)L3 系统级可用性(MTTR)L2 组件级可靠性(MTBF)L1 基础设施可靠性

越往上,越偏人和组织;越往下,越偏技术


四、架构性手段(设计期:降低故障概率)

4.1 冗余(Availability 的基础)

关键认知:

冗余并不能保证高可用,只是提供“选择权”

状态决策的三种模式

本质问题:

状态信息本身也是不可靠的


4.2 隔离(控制故障影响面)

隔离的目标

隔离能力树

隔离能力├─ 资源隔离│  ├─ 线程│  ├─ 进程│  └─ 机器├─ 流量隔离│  ├─ 正式 / 压测│  ├─ 爬虫│  └─ 链路├─ 数据隔离│  ├─ 读写分离│  └─ 多中心├─ 机房隔离│  ├─ 同城│  ├─ 异地│  └─ 跨国

4.3 存算分离(复杂度控制)

让计算节点无状态,是提升可用性的关键简化手段


五、运行时控制手段(故障发生时)

5.1 限流 / 熔断 / 降级的角色划分

手段保护对象本质
限流服务提供方资源保护
熔断服务调用方自我保护
降级系统整体有损服务

5.2 降级的业务哲学

降级类型抽象

降级策略├─ 数据降级(默认值 / 静态值 / 缓存)├─ 功能降级(关闭非核心)├─ 流量降级(限流)├─ 写降级(异步 / 延迟)├─ 前端降级(静态化)

六、变更与治理(人为风险控制)

6.1 变更是最大风险源

大部分事故不是系统设计错误,而是变更失控

变更生命周期


6.2 数据逻辑保护


七、容灾与业务连续性(极端场景)

7.1 容灾的层次

7.2 DRP / BCP 的本质

容灾不是技术方案,而是组织应急能力


八、可观测性与健康治理

8.1 监控的四个维度

8.2 架构健康的三大对象

架构健康├─ 应用健康├─ 环境健康└─ 依赖健康

目标不是“零问题”,而是:

问题可预期、可发现、可处理


九、评估与持续演进

9.1 FMEA:事前失败分析

9.2 SRE 文化


十、最终总结

高可用设计的核心权衡

高可用不是“设计出来的”,而是“治理出来的”

关联内容(自动生成)