漫話:如何給女朋友解釋系統(tǒng)高可用?
在一個陽光明媚的周二下午,我正在公司里面看著即將發(fā)布的 Java 12 的新特性,這時候女朋友打來電話。
晚上下班后,女朋友回到家里面和我說,發(fā)現(xiàn)淘寶無法訪問的十幾分鐘后又可以了。
系統(tǒng)可用性
系統(tǒng)的可用性,英文名字為 System Usability,即系統(tǒng)服務(wù)不中斷運行時間占實際運行時間的比例。所以,可用性其實是一個百分比,如 99.9%。
我們通常會聽說一個詞:高可用,其實指的就是高可用性。高可用指的就是系統(tǒng)服務(wù)不中斷運行時間占實際運行時間的占比更大。
要了解可用性,躲不開的三個體現(xiàn)系統(tǒng)可用性的重要指標:
- MTTR
- MTTF
- MTBF
MTTR:即 Mean Time To Repair,中文為:平均修復(fù)時間,指系統(tǒng)從發(fā)生故障到維修結(jié)束之間的時間段的平均值。
MTTF:即 Mean Time To Failure,中文為:平均無故障時間。指系統(tǒng)無故障運行的平均時間,取所有從系統(tǒng)開始正常運行到發(fā)生故障之間的時間段的平均值。
MTBF:即 Mean Time Between Failure,中文為:平均失效間隔,指系統(tǒng)兩次故障發(fā)生時間之間的時間段的平均值。
上圖,就是一張可以提現(xiàn)三者之間關(guān)系的圖,可以看出:
- MTBF = MTTF + MTTR
按照以上概念,那么系統(tǒng)的可用性指的其實就是: MTTF / MTBF * 100% ,即 MTTF / ( MTTF + MTTR ) * 100%。
在實際的情況中,很多系統(tǒng)都是由若干個子系統(tǒng)組成的,那么整個系統(tǒng)的可用性到底該如何計算呢?我們接著來了解下系統(tǒng)結(jié)構(gòu)。
對于串聯(lián)系統(tǒng):
對于并聯(lián)系統(tǒng):
對于組合系統(tǒng):
可用性的衡量
衡量系統(tǒng)的高可用性,一般通過 SLA,全稱 Service Level Agreement,也就是有幾個 9 的高可用性。
我們經(jīng)常可以看到很多公司會宣稱自己的系統(tǒng)可以達到 99.99%、99.999%等。
工業(yè)界通常通過統(tǒng)計故障發(fā)生到恢復(fù)的時間的方法來測量 SLA。一般以年度為單位,統(tǒng)計一年內(nèi)的系統(tǒng)不可用總時長。
具體對應(yīng)關(guān)系如下表:
墨菲定律說 “會出錯的事總會出錯”,可用性做到 100 是可望而不可及的。
對于 SLA 指標來說,9 的數(shù)字越多可用性越高,宕機時間越少,系統(tǒng)就可以在給定的時刻內(nèi)高比例地正常工作。然而對系統(tǒng)的挑戰(zhàn)就越大,投入的成本也會越高。
比如 5 個 9 要求系統(tǒng)每年只宕機 5 分鐘左右,而 4 個 9 要求每年宕機時間不超過一個小時。
這就使得系統(tǒng)需要在設(shè)計、基礎(chǔ)設(shè)施、數(shù)據(jù)備份等不同層面采取多種方式,甚至增加基礎(chǔ)設(shè)施投資來保證可用性。
“當你的設(shè)備處理人命關(guān)天的事情,或業(yè)務(wù)中斷一分鐘就會損失百萬美刀,那么你可以考慮 99.99% 的可靠性。”
Robertson(Linux 高可用項目開發(fā)者)
不同系統(tǒng)的可用性要求也是不同的,比如:淘寶、京東等這些電商系統(tǒng)用戶量很多,不同區(qū)不同時刻都有大量的用戶在使用系統(tǒng),這必然對系統(tǒng)的可用性要求很高。
據(jù)以往這些系統(tǒng)的故障統(tǒng)計和不準確地測試數(shù)據(jù)推測,它們目前的可用性是在 3 個 9 到 4 個 9 左右。
相對而言,企業(yè)類的工作軟件因為通常只在工作時間被使用,或只在某些特定的地區(qū)使用,或只給某部分人某一特定時間使用,可用性的需求就會低一些。
可用性的保障
影響可用性的因素有很多,包括系統(tǒng)故障、基礎(chǔ)設(shè)施故障、數(shù)據(jù)故障、安全攻擊、系統(tǒng)壓力等等。
可用性的保障涉及到很多層面,其中包括但不限于:
- 軟件的設(shè)計、編碼、測試、上線和軟件配置管理的水平
- 工程師的人員技能水平
- 運維的管理和技術(shù)水平
- 數(shù)據(jù)中心的運營管理水平
- 依賴于第三方服務(wù)的管理水平
- 對待技術(shù)的態(tài)度
- 一個公司的工程文化
- 領(lǐng)導(dǎo)者對工程的尊重
下面的表格里,列出了高可用常見的問題和應(yīng)對措施:
保障系統(tǒng)的高可用,并不是一個簡單的事情,上表中列舉的也只是其中一部分方法論,真正的保證高可用,還是需要大量實踐的!