1. 程式人生 > >軟體系統可靠性的幾個9解釋

軟體系統可靠性的幾個9解釋

轉自            http://blog.csdn.net/yqq__00/article/details/51441228

--------------------------------------------

在軟體系統的高可靠性(也稱為可用性,英文描述為HA,High Available)裡有個衡量其可靠性的標準——X個9,這個X是代表數字3~5。X個9表示在軟體系統1年時間的使用過程中,系統可以正常使用時間與總時間(1年)之比,我們通過下面的計算來感受下X個9在不同級別的可靠性差異。

  • 3個9(1-99.9%)*365*24=8.76小時,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是8.76小時。
  • 4個9(1-99.99%)*365*24=0.876小時=52.6分鐘,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是52.6分鐘。
  • 5個9(1-99.999%)*365*24*60=5.26分鐘,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是5.26分鐘。

那麼X個9裡的X只代表數字3~5,為什麼沒有1~2,也沒有大於6的呢?我們接著往下計算:

  • 1個9:(1-90%)*365=36.5天
  • 2個9:(1-99%)*365=3.65天
  • 6個9:(1-99.9999%)*365*24*60*60=31秒

可以看到1個9和、2個9分別表示一年時間內業務可能中斷的時間是36.5天、3.65天,這種級別的可靠性或許還不配使用“可靠性”這個詞;而6個9則表示一年內業務中斷時間最多是31秒,那麼這個級別的可靠性並非實現不了,而是要做到從5個9》6個9的可靠性提升的話,後者需要付出比前者幾倍的成本,所以在企業裡大家都只談(3~5)個9。

高可用是IT世界中的一個重要領域,不過,對大多少IT公司或組織來說,高可用性達到99.999%是沒必要的。

一個公司或組織是否需要99.999%的可靠性,依賴許多因素:軟體成本,公司財力能否承擔等。
“當你的裝置處理人命關天的事情,或業務中斷一分鐘就會損失百萬美刀,那麼你可以考慮99.99%的可靠性。”Robertson(Linux高可用專案開發者)如是說。

權衡高可用的付出與得到
實現高可用系統的成本,不論是99.99%還是99.999%,都包含了軟體成本,硬體成本,人力成本,還有培訓支出。當一個公司打算要做高可用系統之前,最好先權衡,構建高可用系統的成本,與系統業務中斷所帶來的損失,哪個付出更多。若不想付出太多的資金在構建高可用系統上,那麼就得分析你的系統,什麼時候會出現業務中斷,控制住業務中斷所帶來得損失,以及構建快速恢復的能力。
實際上,關乎每分鐘有百萬美刀的系統,也可以不用做5個9的高可用系統,只要能夠控制到有計劃地中斷業務(也可以說是中斷業務可控制),如在交易時候業務不中斷業務即可。
根據愛默生對41家資料中心的統計資料報告發現:非計劃的業務中斷是導致公司業績損失的主要因素”

。報告中還指出:“業務中斷後的故障定位,分析與解決,也需要耗費不少財力”

如果一個公司的業務承諾的可靠性是99.99%,那麼每年只允許業務中斷8.76小時。如果業務中斷導致的損失是每小時100萬,那麼一年的損失是876萬。
但是,如果這個公司承諾的可靠性是99.999%,那麼每年只允許業務中斷不超過1個小時,如果業務中斷導致的損失是每小時100萬,那麼一年的損失小於100萬。
我們可以算到,可靠性從99.99%提升到99.999%,可以挽回大概700萬的損失。那麼這種情況下是值得的。
但是如果你提升可靠性到99.999%上面的花費,超過了700萬,那保持99.99%的可靠性也是一種選擇。

任何產品都需要考慮投入與產出比,那麼你允許的業務中斷時間是多少?

99.99%的可靠性對大多數業務來說是足夠的,對於一些離線業務,99.9%可靠性大部分場景下也夠用了。

實現99.99%的可靠性
在一些領域,99.999%可靠性是必須的,如運輸行業。假如火車控制系統故障了,那麼可能成千上萬的旅客就會被滯留。(天朝的7.23事故大家都知道)
這種場景下,實現99.999%可靠性通常使用容錯處理,包含軟體的容錯和硬體的容錯。常見的軟體容錯有負載均衡,就是多個例項同時提供服務。當軟體容錯不起作用時候,就需要用到硬體容錯,硬體容錯一半是做硬體冗餘,如兩個伺服器做主備。