这两个概念很接近,我相信很多读者也混淆。在《分布式系统原理与范型》一书提到了二者的区别,本文特此记录一下。
可用性(Availability)被定义为系统的一个属性,它说明系统已准备好,马上就可以使用。换句话说,高度可用的系统在任何给定的时刻都能及时地工作。可用性关注的是服务总体的持续时间,系统在给定时间内总体的运行时间越长,可用性越高。
可用性级别 | 年度宕机时间(以365天为例) | 月宕机时间(以30天为例) | 周宕机时间 | 日宕机时间 |
---|---|---|---|---|
90% | 36.5天 | 72小时 | 16.8小时 | 2.4小时 |
99% | 87.6小时 | 7.2小时 | 1.68小时 | 14分钟 |
99.9% | 8.76小时 | 43分钟 | 10.1分钟 | 86秒 |
99.95% | 4.4小时 | 22分钟 | 5分钟 | 43秒 |
99.99% | 52.6分钟 | 4.3分钟 | 1.01分钟 | 8.6秒 |
99.999% | 5.26分钟 | 26秒 | 6.05秒 | 0.86秒 |
而公有云在结算可用性的时候,最常用的周期,是以自然月为单位。
以火山引擎为例,对于单ECS实例,如服务可用性低于99.975%,可按照下表中的标准获得赔偿:
服务可用性 | 赔偿代金券金额 |
---|---|
低于99.975%但等于或高于99% | 月度服务费的10% |
低于99%但等于或高于95% | 月度服务费的25% |
低于95% | 月度服务费的100% |
可靠性(Reliability)是指系统可以无故障地持续运行。与可用性相反,可靠性是根据时间间隔而不是任何时刻来进行定义的。可靠性相关的几个指标如下:
MTBF(Mean Time Between Failure)
即平均无故障时间,是指从新的产品在规定的工作环境条件下开始工作到出现第一个故障的时间的平均值。MTBF越长表示可靠性越高,正确工作能力越强 。
我们举个两个例子来说明二者的区别。
- 如果系统在每小时崩溃1ms,那么它的可用性就超过99.9999%,但是它还是高度不可靠,因为它只能无故障运行1小时。
- 如果一个系统从来不崩溃,但是每年要停机两星期,那么它是高度可靠的,但是可用性只有96%。