可靠性指標

可靠性(Availability),或者說可用性,是描述系統可以提供服務能力的重要指標。高可靠的分佈式系統,往往需要各種複雜的機制來進行保障。

通常情況下,服務的可用性可以用服務承諾(Service Level Agreement,SLA SLA)、服務指標(Service Level Indicator,SLI)、服務目標(Service Level Objective,SLO)等方面進行衡量。

幾個 9 的指標

很多領域裡談到服務的高可靠性,都喜歡用幾個 9 的指標來進行衡量。

幾個 9,其實是概率意義上粗略反映了系統能提供服務的可靠性指標,最初是電信領域提出的概念。

下表給出不同指標下,每年允許服務出現不可用時間的參考值。

指標

概率可靠性

每年允許不可用時間

典型場景

一個 9

90%

1.2 個月

簡單測試

二個 9

99%

3.6 天

普通單點

三個 9

99.9%

8.6 小時

普通集群

四個 9

99.99%

51.6 分鐘

高可用

五個 9

99.999%

5 分鐘

電信級

六個 9

99.9999%

31 秒

極高要求

七個 9

99.99999%

3 秒

N/A

一般來說,單點的服務器系統至少應能滿足兩個 9;普通企業信息系統三個 9 就肯定足夠了(大家可以統計下自己企業內因系統維護每年要停多少時間),系統能達到四個 9 已經是領先水平了(參考 AWS 等雲計算平臺)。電信級的應用一般需要能達到五個 9,這已經很厲害了,一年裡面最多允許出現五分鐘左右的服務不可用。六個 9 以及以上的系統,就更加少見了,要實現往往意味著極高的代價。

兩個核心時間

一般地,描述系統出現故障的可能性和故障出現後的恢復能力,有兩個基礎的指標:MTBF 和 MTTR。

  • MTBF:Mean Time Between Failures,平均故障間隔時間,即系統可以無故障運行的預期時間。

  • MTTR:Mean Time To Repair,平均修復時間,即發生故障後,系統可以恢復到正常運行的預期時間。

MTBF 衡量了系統發生故障的頻率,如果一個系統的 MTBF 很短,則往往意味著該系統可用性低;而 MTTR 則反映了系統碰到故障後服務的恢復能力,如果系統的 MTTR 過長,則說明系統一旦發生故障,需要較長時間才能恢復服務。

一個高可用的系統應該是具有儘量長的 MTBF 和儘量短的 MTTR。

提高可靠性

那麼,該如何提升可靠性呢?有兩個基本思路:一是讓系統中的單個組件都變得更可靠;二是乾脆消滅單點。

IT 從業人員大都有類似的經驗,普通筆記本電腦,基本上是過一陣可能就要重啟下;而運行 Linux/Unix 系統的專用服務器,則可能連續運行幾個月甚至幾年時間都不出問題。另外,普通的家用路由器,跟生產級別路由器相比,更容易出現運行故障。這些都是單個組件可靠性不同導致的例子,可以通過簡單升級單點的軟硬件來改善可靠性。

然而,依靠單點實現的可靠性畢竟是有限的。要想進一步的提升,那就只好消滅單點,通過主從、多活等模式讓多個節點集體完成原先單點的工作。這可以從概率意義上改善服務對外整體的可靠性,這也是分佈式系統的一個重要用途。

Last updated