怎樣計算系統的可靠性和可用性是幾個9?
我們在評估一個系統的可用性和可靠性時,一般都會說三個9,四個9之類的。這些一般都是說系統的SLA(Service Level Agreement) 具體是幾個「9」,以此,來表示該系統一年中具體宕機的時間。
那這幾個9是怎么計算出來的,具體一個系統可用性和可靠性又有哪些方面考慮呢?
以下是朋友推薦的一篇很棒的英文文章,我做了翻譯。
一、系統可用性
系統可用性是通過將系統建模為串聯和并聯的組件來計算的。以下規則用于確定系統是串聯的還是并聯的:
- 如果組件的失效導致組合變得不可操作,則認為這兩個部件是串聯操作的
- 如果組件的故障導致另一部件接管故障部件的操作,則認為這兩部件并行操作。
1. 串行的可用性
如上圖所示,兩個組件 X 和 Y,如果有一個出問題導致整個組合都不可用,就認為 X 和 Y 這兩個組件是串聯的。只有組件 X 和組件 Y 同時可用時,整個組合才可用。由此可見,組合的可用性是這兩部分的乘積,公式如下:
A = Ax Ay
從上面的等式我們看出,串聯系統中,整體組合的可用性,總是低于單個組件的可用性。
對于上面 X 和 Y 兩個串聯組件,可用性如下:
從上面的表中,我們看到,即使使用了非常高可用性的組件Y,但組合系統仍然受組件 X 的影響,會降低好多,和「木桶原理」一致,都受最短板的影響。
2. 并行的可用性
如上圖所示,如果兩個組件都失敗時,整個系統會失敗的話,這兩個組件會被認為是并行的。任一組件可用時,整個系統都是可用的。整體可用性是 1- (兩個組件都不可用),公式如下:
A = 1-(1-Ax )2
從上面我們能看出,兩個組件并行的系統,整體可用性要任一單獨的組件可用性高。如上圖假設是組件X的兩個部分,可用性如下:
我們看到,即使一個可用性低的組件X,組合后的系統可用性也很高。
二、可用性計算舉例
1. 了解系統
***步,我們先準備一個系統的詳細框圖。該系統由輸入傳感器組成,該傳感器接收信號并將其轉換為適合信號處理器的數據流。輸出會送到兩個冗余的信號處理器。源信號處理器用于輸入,備用信號處理器忽略來自輸入換能器的數據。備用處理器監控主信號處理器的健康狀態。兩個信號處理器的輸出被組合并發送到輸出轉換器。再次,有源信號處理器驅動數據線。待機使數據線保持不變。輸出傳感器將信號輸出到外部。
2. 系統可靠性
第二步是準備系統的可靠性模型。在這個階段,我們決定系統的并行和串行連接。我們的示例系統的完整可靠性模型如下:
這里要注意的幾個要點是:
- 信號處理器的硬件和軟件已經被建模為兩個不同的實體。軟件和硬件是串聯的,因為如果硬件或軟件不工作,信號處理器就不能工作。
- 兩個信號處理器(軟件+硬件)結合在一起,形成信號處理復合體。在信號處理復合體中,兩個信號處理復合體被并行放置,因為當信號處理器之一失效時,系統可以工作。
- 輸入傳感器、信號處理復合體和輸出傳感器被串聯放置,因為三個部件中的任何一個的失效都將導致系統的完全失效。
3. 計算單個組件的可用性
第三步包括計算單個組件的可用性。MTBF(Mean time between failure 故障之間的平均時間)和MTTR(Mean time to repair 修復的平均時間)值針對每個組件進行估計。對于硬件組件,MTBF信息可以從硬件制造商的數據表中獲得。如果硬件是在內部開發的,則硬件組將為板提供MTBF信息。對硬件的MTTR估計基于操作員對系統的監視程度。這里我們估計大約2小時的硬件MTTR。
一旦已知MTBF和MTTR,就可以使用以下公式來計算組件的可用性:
評估軟件的MTBF 這個活兒還是比較費勁的。軟件MTBF實際上是軟件重新啟動的時間。中間的間隔可以用系統的缺陷率來估計。在這里,我們估計MTBF大約是4000小時。MTTR是重新啟動失敗處理器的時間。我們的處理器支持自動重啟,所以我們估計軟件MTTR大約5分鐘。請注意,5分鐘似乎是在更高的一面。但MTTR應包括以下內容:
- 由于信號處理器軟件崩潰而中止的活動中浪費的時間
- 檢測信號處理器故障的時間
- 失敗的處理器重新啟動并返回服務時所花費的時間
從上面表格我們看到
- 即使硬件MTBF更高,軟件的可用性也更高。主要原因是軟件的MTTR要低得多。換句話說,軟件確實經常失敗,但是恢復很快,因此對系統可用性的影響較小。
- 輸入和輸出傳感器具有相當高的可用性,因此即使在沒有冗余組件的情況下也能夠實現相當高的可用性。
4. 計算系統可用性
***一步是計算整個系統的可用性。這些計算是基于串行和并行可用性計算公式。
三、怎么做到更多的9
每個公司對幾個9的定義都不一樣,好多的互聯網公司要求都是99.99。像一些事業單位網站,辦事網站等,經常故障服務不可用,估計***也就到99.9。
如果我們提供的服務可用性越低,意味著造成的損失也越大,別的不說,如果是特別重要的時刻,或許就在某一分鐘,你可能就會因服務不可用而丟掉一筆大的訂單,這都是始料未及的。所以,只要盡可能的提升SLA可用性才能***化的提高企業生產力。
要做到更多的9,就需要監控自己的服務,在服務出現異常或者宕機的時候,能及時恢復。增加冗余,防止出現問題。