跳转到内容
系统设计入门 · 中文文档

可用性模式

有两种支持高可用性的模式: 故障切换(fail-over)和复制(replication)。

关于工作到备用的故障切换流程是,工作服务器发送周期信号给待机中的备用服务器。如果周期信号中断,备用服务器切换成工作服务器的 IP 地址并恢复服务。

宕机时间取决于备用服务器处于“热”待机状态还是需要从“冷”待机状态进行启动。只有工作服务器处理流量。

工作到备用的故障切换也被称为主从切换。

在双工作切换中,双方都在管控流量,在它们之间分散负载。

如果是外网服务器,DNS 将需要对两方都了解。如果是内网服务器,应用程序逻辑将需要对两方都了解。

双工作切换也可以称为主主切换。

  • 故障切换需要添加额外硬件并增加复杂性。
  • 如果新写入数据在能被复制到备用系统之前,工作系统出现了故障,则有可能会丢失数据。

这个主题进一步探讨了数据库部分:

依据英文版补译:以下内容补齐中文原文缺失的可用率计算。

可用率通常表示服务正常运行时间占总时间的比例,也可以从停机时间计算。它常用“几个 9”来描述,例如 99.99% 就是“四个 9”。

统计周期允许的停机时间
每年8 小时 45 分 57 秒
每月43 分 49.7 秒
每周10 分 4.8 秒
每天1 分 26.4 秒
统计周期允许的停机时间
每年52 分 35.7 秒
每月4 分 23 秒
每周1 分 0.48 秒
每天约 8.6 秒

本站校注:年、月保留英文表的近似统计口径。英文表将四个 9 的每周停机时间写成了 1m 5s;按 7 天计算应为 7 × 24 × 3600 × (1 - 0.9999) = 60.48 秒,此处已更正。

一个服务由多个可能失效的组件组成时,总体可用率取决于这些组件的依赖关系。

串联:每个组件都必须正常。 当两个组件的可用率都低于 100% 时,串联后的总体可用率会下降:

总可用率 = A 的可用率 × B 的可用率

如果 A 和 B 的可用率都是 99.9%,串联后为 0.999 × 0.999 = 0.998001,约为 99.8%。

并联:至少一个组件正常即可提供服务。 两个组件并联可以提高总体可用率:

总可用率 = 1 - (1 - A 的可用率) × (1 - B 的可用率)

如果 A 和 B 的可用率都是 99.9%,并联后为 1 - 0.001 × 0.001 = 0.999999,即 99.9999%。

本站校注:上述乘法模型假设组件故障相互独立;并联还要求任一存活组件能够接管服务。共同依赖同一电源、网络或数据库时,不能直接用该公式宣称冗余后的可用率。