當系統不再提供與其規范一致的服務時,故障就發生了,可用性就是指系統修復故障的能力,它關注的方面包括如何檢測系統故障,系統故障發生的頻度,出現故障發生什么情況,允許系統有多長時間非正常運行,什么時候可以安全地出現故障等。
衡量系統的可用性可以用公式 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中的操作,保證系統正常運行
-
增加系統的能力
增強系統處理各種錯誤異常的能力,確保在不報錯和異常的情況下堅強的運行下去
-
第五章 質量屬性之可用性
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 姓名:朱碩雅 學號:14020120008 轉載自http://mp.weixin.qq.com/s?__biz=...
- Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...