简单区分
从事故、稳定方面简单理解如下:
名词 | 简单理解 |
可靠性 | 不出事故 |
可用性 | 不出事故 出事故后,快速止损 |
稳定性 | 解决故障问题基础上 服务持续稳定、性能稳定 |
总体对比
可用性 | 可靠性 | 稳定性 | |
英文 | 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
参考: