对比Availability可用性、Reliability可靠性、Stability稳定性
区分
从事故、稳定方面简单理解如下:
描述 | |
---|---|
可靠性 | 不出事故 |
可用性 | 出事故后,快速止损 |
稳定性 | 解决故障问题基础上,服务持续稳定、性能稳定 |
总体对比
可用性
可用性指系统在给定时间内可以正常工作的概率,通常用SLA(服务等级协议,service level agreement)指标来表示。
这是这段时间的总体的可用性指标。
通俗叫法 | 可用性级别 | 年度宕机时间 | 周宕机时间 | 每天宕机时间 |
---|---|---|---|---|
1个9 | 90% | 36.5天 | 16.8小时 | 2.4小时 |
2个9 | 99% | 87.6小时 | 1.68小时 | 14分钟 |
3个9 | 99.9% | 8.76小时 | 10.1分钟 | 86秒 |
4个9 | 99.99% | 52.6分钟 | 1.01分钟 | 8.6秒 |
5个9 | 99.999% | 5.26分钟,315.36秒 | 6.05秒 | 0.86秒 |
可靠性
可靠性相关的几个指标如下:
MTBF(Mean Time Between Failure)
即平均无故障时间,是指从新的产品在规定的工作环境条件下开始工作到出现第一个故障的时间的平均值。
MTBF越长表示可靠性越高,正确工作能力越强 。
MTTR(Mean Time To Repair)
即平均修复时间,是指可修复产品的平均修复时间,就是从出现故障到修复中间的这段时间。
MTTR越短表示易恢复性越好。
MTTF(Mean Time To Failure)
即平均失效时间。系统平均能够正常运行多长时间,才发生一次故障。
系统的可靠性越高,平均无故障时间越长。
这些指标跟可用性关系
Availability = UpTime/(UpTime+DownTime) = MTBF / (MTBF + MTTR)
稳定性
Stackoverflow 看到这样一段代码来表示稳定性和可靠性的区别,甚为有趣:
# Reliable but unstable:
add(a,b):
if randomInt mod 5 == 0:
throw exception
else
print a+b
# Stable but unreliable:
add(a,b):
if randomInt mod 5 == 0:
print a+a
else
print a+b