从单机房到同城双活,再到异地多活——可用性的每一次提升,都伴随着架构的质变。

一、可用性度量

  • 1.1 几个 9——99.9%(3 个 9)→ 年宕机 8.76 小时
  • 1.2 99.99%(4 个 9)→ 年宕机 52.56 分钟
  • 1.3 99.999%(5 个 9)→ 年宕机 5.26 分钟
  • 1.4 可用性 = MTTF / (MTTF + MTTR)

二、单机房高可用

  • 2.1 服务多实例——无单点
  • 2.2 数据库主从——故障自动切换
  • 2.3 限流熔断——防止级联故障
  • 2.4 单机房的局限——机房级故障

三、同城双活

  • 3.1 两个机房——延迟 1-3ms
  • 3.2 数据同步——数据库主从跨机房
  • 3.3 流量分发——DNS / GSLB
  • 3.4 故障切换——自动 vs 手动

四、两地三中心

  • 4.1 同城双活 + 异地灾备
  • 4.2 灾备中心冷备/温备
  • 4.3 切换演练——定期进行

五、异地多活(单元化)

  • 5.1 单元化架构——按用户维度划分单元
  • 5.2 每个单元独立闭环——完整的服务 + 数据库
  • 5.3 数据同步——异步最终一致
  • 5.4 流量路由——按 userId 路由到对应单元
  • 5.5 单元化的代价——数据隔离、跨单元调用

六、故障演练与混沌工程

  • 6.1 Chaos Monkey——随机杀服务
  • 6.2 故障注入——网络延迟、磁盘故障
  • 6.3 故障演练流程——计划 → 执行 → 复盘

七、总结

  • 高可用设计的核心——冗余 + 自动切换
  • 成本 vs 可用性的权衡