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