第五章 質量屬性之可用性

  • 當系統不再提供與其規范一致的服務時,故障就發生了,可用性就是指系統修復故障的能力,它關注的方面包括如何檢測系統故障,系統故障發生的頻度,出現故障發生什么情況,允許系統有多長時間非正常運行,什么時候可以安全地出現故障等。

  • 衡量系統的可用性可以用公式 MTBF/(MTBF+MTTR),其中MTBF為系統出錯的時間間隔也就是平均正常工作時間,而MTTR表示系統修復錯誤用的時間。當然上面的公式計算出的結果越大表示系統的可用性越好。

  • 故障和錯誤的區別是:如果不對錯誤采取解決措施,錯誤最終就會變成系統故障。

  • 可用性的一般場景

    • 系統內部,系統外部:人,硬件,軟件,物理架構,物理環境

    • 刺激(觸發事件)

      錯誤:疏忽,崩潰,時間,響應

    • 制品

      系統的處理器,通信通道,持久存儲器,進程

    • 環境

      正常操作,啟動,關閉,修復模式,降級操作,過載操作

    • 響應

      • 在錯誤變成故障之前,檢測出錯誤
        • 記錄錯誤
        • 通知相關的人和系統
      • 從故障中進行修復
        • 禁止導致故障的事件源
        • 在一段預先制定的時間間隔內不可用,在這段時間內對系統進行檢修
        • 對錯誤或者故障進行修復,或者就用鴕鳥策略讓它處于故障不做處理當作故障沒有發生
        • 進行降級操作
    • 響應度量

      • 系統必須可用的時間間隔
      • 可用性(以百分比的形式)
      • 檢測故障的時間
      • 修復故障的時間
      • 系統可以在降級模式下運行的時間
      • 系統不用當機就可以從錯誤中恢復的比例
  • 可用性戰術

    • 就像上面說的,錯誤可能會導致故障的發生,而可用性戰術將會阻止錯誤發展成為故障,至少能把錯誤的影響限制在一定范圍內,從而使修復成為可能。

      錯誤->控制可用性的戰術->所屏蔽的錯誤或所做的修復

      下面主要就是討論的可用性戰術就主要針對錯誤的檢測,錯誤的恢復和錯誤的預防

    • 錯誤的檢測

      • Ping/echo

        通過系統監視器發出Ping請求來探測服務的通信路徑是不是通的,某個組件是不是還在工作。

      • 監視(Monitor)

        通過使用一個監視器的組件來檢測其他組件的健康狀況。

      • 心跳(Heartbeat)

        通過組建定區發出一個心跳信息,來主動的告訴系統它正在工作。

      • 時間戳(Time stamp)

        這個策略是用來探測事件到達的順序

      • 健康檢測(sanity checking)

        檢測組件的某一個操作或者輸出的有效性

      • 條件監視(Condition monitoring)

        對特定條件進行檢測,比如檢驗和。

      • 投票(Voting)

        使用冗余的組件做同一件事情,以相同的輸入,如果產生不同的輸出,則忽略少數,采納多數的結果。

      • 異常檢測(Exception detection)

        對保證系統正常運行的條件的檢測

      • 自檢(Self-test)

        對自身資源,依賴庫和硬件的檢測

    • 從錯誤中恢復

      有的時候不一定從一開始就檢測到有錯誤發生,那就需要在錯誤發生后有恢復機制,恢復機制包括以下兩種形式。

      • 準備和修復策略(Preparation and repair tactics)

        • 在運行過程中同時處理所有備份和主模塊(Active redundancy)

          雖然只是把主模塊展示給客戶,但備份的組件也在運行,和主模塊保持同步

        • 定期對備份進行更新(Passive redundancy)

          主模塊在運行的過程中,不要求備份的數據實時和主模塊保持一致,而是定期對備份的數據進行更新

        • 冷處理(Spare)

          表示不會對備份進行更新,只是在主模塊當掉的時候,啟用備份,意味著從頭開始,因為備份沒有任何同步的數據

        • 異常處理

          當檢測到有異常發生時,針對這個異常有一定的措施,不至于異常導致錯誤使整個系統都不能正常工作

        • 回滾(rollback)

          就是讓系統回滾到之前好的版本運行

        • 軟件升級(software upgrade)

          不停止服務的對軟件進行升級,來滿足對新特性和可用性的支持

        • 重試(Retry)

        • 忽略錯誤的行為(ignore faulty behavior)

        • 退化操作(degradation)

          只保持重要功能部分,這樣保證出現的只是部分功能性問題,不會影響整個系統

        • 重新配置(Reconfiguration)

      • 在從錯誤中恢復后進行重啟(Reintroduction)

        • shadow

          在正式加入系統前,先嘗試運行,并對這段時間的運行過程進行監控和修正

        • 狀態重新同步

          適用于前面講的active redundancy 和 passive redundancy

        • 逐步重啟(Escalation)

        • Non-stop-forwarding

          就是在不停止對外服務的情況下,對部分功能進行重啟

    • 錯誤的預防

      相比于檢測系統發生的錯誤和發生錯誤后對系統的恢復來說,也可以從一開始就禁止錯誤的發生

      • 直接從服務中將某個部件移除

      • 事務

        參考數據庫出錯的恢復機制,就是記錄系統的一系列的步驟,出錯了可以有序的撤銷

      • 預測模型

        通過監控系統的健康狀況來保證系統正在正常的方向上運行,一旦出錯,立即停止

      • 阻止異常

        使用try-catch,這樣即使發生了異常,系統自動執行catch中的操作,保證系統正常運行

      • 增加系統的能力

        增強系統處理各種錯誤異常的能力,確保在不報錯和異常的情況下堅強的運行下去

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容