logo
System Design Core Concepts

availability模式

故障切换与复制的availability策略

Availability 指系统在某个时间段内持续可用、能完成其功能的比例。它是衡量系统在正常条件下可用时长的简单指标。

The Nine's of availability

Availability 常用 uptime(或 downtime)占比来度量,也叫“几个 9”。

$$ Availability = \frac{Uptime}{(Uptime + Downtime)} $$

比如 availability 是 99.00%,就称为 “2 nines”;99.9% 是 “3 nines”,以此类推。

Availability (Percent)Downtime (Year)Downtime (Month)Downtime (Week)
90% (one nine)36.53 days72 hours16.8 hours
99% (two nines)3.65 days7.20 hours1.68 hours
99.9% (three nines)8.77 hours43.8 minutes10.1 minutes
99.99% (four nines)52.6 minutes4.32 minutes1.01 minutes
99.999% (five nines)5.25 minutes25.9 seconds6.05 seconds
99.9999% (six nines)31.56 seconds2.59 seconds604.8 milliseconds
99.99999% (seven nines)3.15 seconds263 milliseconds60.5 milliseconds
99.999999% (eight nines)315.6 milliseconds26.3 milliseconds6 milliseconds
99.9999999% (nine nines)31.6 milliseconds2.6 milliseconds0.6 milliseconds

Availability in Sequence vs Parallel

如果一个服务由多个容易失败的组件构成,整体 availability 取决于它们是串行还是并行。

Sequence

串行时整体 availability 会降低:

$$ Availability \space (Total) = Availability \space (Foo) * Availability \space (Bar) $$

例如 FooBar 都是 99.9%,串行组合后总 availability 约为 99.8%。

Parallel

并行时整体 availability 会提高:

$$ Availability \space (Total) = 1 - (1 - Availability \space (Foo)) * (1 - Availability \space (Bar)) $$

例如 FooBar 都是 99.9%,并行组合后总 availability 为 99.9999%。

Availability vs Reliability

如果系统可靠(reliable),它通常可用;但系统可用不代表它一定可靠。换句话说,高 reliability 有助于高 availability,但也可能通过其他机制在不可靠系统上实现高 availability。

High availability vs Fault Tolerance

High availability 与 fault tolerance 都是为了提高 uptime,但方式不同。Fault-tolerant 系统几乎没有服务中断,但成本很高;High availability 系统允许最小化的服务中断。Fault tolerance 要求硬件完全冗余:主系统故障时,备用系统无缝接管、无 uptime 损失。

相关练习题

availability模式

暂无相关练习题