簡單區分
從事故、穩定方面簡單理解如下:
名詞 | 簡單理解 |
---|---|
可靠性 | 不出事故 |
可用性 | 不出事故 出事故后,快速止損 |
穩定性 | 解決故障問題基礎上 服務持續穩定、性能穩定 |
總體對比
可用性 | 可靠性 | 穩定性 | |
英文 | 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
參考: