當系統(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)處理各種錯誤異常的能力吱瘩,確保在不報錯和異常的情況下堅強的運行下去
-
第五章 質(zhì)量屬性之可用性
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灰蛙,“玉大人祟剔,你說我怎么就攤上這事∧ξ啵” “怎么了物延?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長仅父。 經(jīng)常有香客問我叛薯,道長浑吟,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任案训,我火速辦了婚禮买置,結果婚禮上,老公的妹妹穿的比我還像新娘强霎。我一直安慰自己忿项,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布城舞。 她就那樣靜靜地躺著轩触,像睡著了一般。 火紅的嫁衣襯著肌膚如雪家夺。 梳的紋絲不亂的頭發(fā)上脱柱,一...
- 文/蒼蘭香墨 我猛地睜開眼蔓腐,長吁一口氣:“原來是場噩夢啊……” “哼矩乐!你這毒婦竟也來了?” 一聲冷哼從身側響起回论,我...
- 正文 年R本政府宣布裕寨,位于F島的核電站浩蓉,受9級特大地震影響派继,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捻艳,卻給世界環(huán)境...
- 文/蒙蒙 一驾窟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧认轨,春花似錦绅络、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至纪蜒,卻和暖如春衷恭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纯续。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)析校,斷路器构罗,智...
- 姓名:朱碩雅 學號:14020120008 轉載自http://mp.weixin.qq.com/s?__biz=...
- Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...