高可用系统设计方案
从单机房到同城双活,再到异地多活——可用性的每一次提升,都伴随着架构的质变。
一、可用性度量
- 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 可用性的权衡
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 谜思录!