第五章 質(zhì)量屬性之可用性

  • 當系統(tǒng)不再提供與其規(guī)范一致的服務時,故障就發(fā)生了茬祷,可用性就是指系統(tǒng)修復故障的能力祭犯,它關注的方面包括如何檢測系統(tǒng)故障沃粗,系統(tǒng)故障發(fā)生的頻度最盅,出現(xiàn)故障發(fā)生什么情況挂签,允許系統(tǒng)有多長時間非正常運行,什么時候可以安全地出現(xiàn)故障等戏售。

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

  • 故障和錯誤的區(qū)別是:如果不對錯誤采取解決措施瞻赶,錯誤最終就會變成系統(tǒng)故障。

  • 可用性的一般場景

    • 系統(tǒng)內(nèi)部园骆,系統(tǒng)外部:人颤诀,硬件,軟件拍柒,物理架構拆讯,物理環(huán)境

    • 刺激(觸發(fā)事件)

      錯誤:疏忽种呐,崩潰爽室,時間阔墩,響應

    • 制品

      系統(tǒng)的處理器啸箫,通信通道忘苛,持久存儲器,進程

    • 環(huán)境

      正常操作稽屏,啟動狐榔,關閉薄腻,修復模式庵楷,降級操作尽纽,過載操作

    • 響應

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

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

    • 就像上面說的肺孤,錯誤可能會導致故障的發(fā)生,而可用性戰(zhàn)術將會阻止錯誤發(fā)展成為故障,至少能把錯誤的影響限制在一定范圍內(nèi)挖胃,從而使修復成為可能酱鸭。

      錯誤->控制可用性的戰(zhàn)術->所屏蔽的錯誤或所做的修復

      下面主要就是討論的可用性戰(zhàn)術就主要針對錯誤的檢測凹髓,錯誤的恢復和錯誤的預防

    • 錯誤的檢測

      • Ping/echo

        通過系統(tǒng)監(jiān)視器發(fā)出Ping請求來探測服務的通信路徑是不是通的,某個組件是不是還在工作赌躺。

      • 監(jiān)視(Monitor)

        通過使用一個監(jiān)視器的組件來檢測其他組件的健康狀況礼患。

      • 心跳(Heartbeat)

        通過組建定區(qū)發(fā)出一個心跳信息缅叠,來主動的告訴系統(tǒng)它正在工作肤粱。

      • 時間戳(Time stamp)

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

      • 健康檢測(sanity checking)

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

      • 條件監(jiān)視(Condition monitoring)

        對特定條件進行檢測余寥,比如檢驗和宋舷。

      • 投票(Voting)

        使用冗余的組件做同一件事情祝蝠,以相同的輸入,如果產(chǎn)生不同的輸出儡嘶,則忽略少數(shù)蹦狂,采納多數(shù)的結果凯楔。

      • 異常檢測(Exception detection)

        對保證系統(tǒng)正常運行的條件的檢測

      • 自檢(Self-test)

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

    • 從錯誤中恢復

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

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

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

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

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

          主模塊在運行的過程中竞惋,不要求備份的數(shù)據(jù)實時和主模塊保持一致拆宛,而是定期對備份的數(shù)據(jù)進行更新

        • 冷處理(Spare)

          表示不會對備份進行更新浑厚,只是在主模塊當?shù)舻臅r候,啟用備份敢艰,意味著從頭開始钠导,因為備份沒有任何同步的數(shù)據(jù)

        • 異常處理

          當檢測到有異常發(fā)生時责掏,針對這個異常有一定的措施换衬,不至于異常導致錯誤使整個系統(tǒng)都不能正常工作

        • 回滾(rollback)

          就是讓系統(tǒng)回滾到之前好的版本運行

        • 軟件升級(software upgrade)

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

        • 重試(Retry)

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

        • 退化操作(degradation)

          只保持重要功能部分蝇完,這樣保證出現(xiàn)的只是部分功能性問題短蜕,不會影響整個系統(tǒng)

        • 重新配置(Reconfiguration)

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

        • shadow

          在正式加入系統(tǒng)前岖研,先嘗試運行孙援,并對這段時間的運行過程進行監(jiān)控和修正

        • 狀態(tài)重新同步

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

        • 逐步重啟(Escalation)

        • Non-stop-forwarding

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

    • 錯誤的預防

      相比于檢測系統(tǒng)發(fā)生的錯誤和發(fā)生錯誤后對系統(tǒng)的恢復來說拓售,也可以從一開始就禁止錯誤的發(fā)生

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

      • 事務

        參考數(shù)據(jù)庫出錯的恢復機制,就是記錄系統(tǒng)的一系列的步驟洼裤,出錯了可以有序的撤銷

      • 預測模型

        通過監(jiān)控系統(tǒng)的健康狀況來保證系統(tǒng)正在正常的方向上運行邻辉,一旦出錯,立即停止

      • 阻止異常

        使用try-catch腮鞍,這樣即使發(fā)生了異常,系統(tǒng)自動執(zhí)行catch中的操作移国,保證系統(tǒng)正常運行

      • 增加系統(tǒng)的能力

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

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市迹缀,隨后出現(xiàn)的幾起案子使碾,更是在濱河造成了極大的恐慌,老刑警劉巖祝懂,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件票摇,死亡現(xiàn)場離奇詭異,居然都是意外死亡砚蓬,警方通過查閱死者的電腦和手機矢门,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灰蛙,“玉大人祟剔,你說我怎么就攤上這事∧ξ啵” “怎么了物延?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仅父。 經(jīng)常有香客問我叛薯,道長浑吟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任案训,我火速辦了婚禮买置,結果婚禮上,老公的妹妹穿的比我還像新娘强霎。我一直安慰自己忿项,他們只是感情好,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布城舞。 她就那樣靜靜地躺著轩触,像睡著了一般。 火紅的嫁衣襯著肌膚如雪家夺。 梳的紋絲不亂的頭發(fā)上脱柱,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音拉馋,去河邊找鬼榨为。 笑死,一個胖子當著我的面吹牛煌茴,可吹牛的內(nèi)容都是我干的随闺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蔓腐,長吁一口氣:“原來是場噩夢啊……” “哼矩乐!你這毒婦竟也來了?” 一聲冷哼從身側響起回论,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤散罕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后傀蓉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欧漱,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年葬燎,在試婚紗的時候發(fā)現(xiàn)自己被綠了误甚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡萨蚕,死狀恐怖靶草,靈堂內(nèi)的尸體忽然破棺而出蹄胰,到底是詐尸還是另有隱情岳遥,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布裕寨,位于F島的核電站浩蓉,受9級特大地震影響派继,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捻艳,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一驾窟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧认轨,春花似錦绅络、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至纪蜒,卻和暖如春衷恭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纯续。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工随珠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猬错。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓窗看,卻偏偏與公主長得像,于是被迫代替她去往敵國和親兔魂。 傳聞我的和親對象是個殘疾皇子烤芦,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容