這篇文章主要討論分散式系統中的故障恢復和常用的故障檢測方法,包括固定心跳檢測和根據歷史心跳信息預測故障檢測方法。 ...
故障恢復
我們之前講過故障隔離,它的目的是對故障組件進行隔離,以避免影響系統中的其他組件,儘可能保證分散式系統的可用性。
但是之後故障隔離還不夠,我們需要考慮進行故障恢復。
什麼是分散式故障?
分散式系統中的故障,可以分為兩類:
- 物理故障,例如硬碟損壞、斷電斷網等。
- 軟體故障,例如系統中存在的bug導致系統崩潰、負載過高等。
我們可以對故障進行分類討論,包括:
- 節點故障,可以分為硬體故障和軟體故障兩種,主要表現是機器無法為用戶提供服務。
- 網路故障,節點間無法通信,從而影響分散式應用正常提供服務。
什麼是故障檢測和恢復?
故障檢測,是指通過一定的方式識別或者發現故障。
在分散式系統中,檢測硬體故障通常會比較複雜,因此是通過查看軟體層的表現結果進行故障檢測。
故障檢測,通過一定方式來識別或者發現故障。
在分散式系統中,檢測硬體故障通常比較麻煩因此會通過軟體層的表現結果進行故障檢測。
故障恢復,是指修複分散式系統中出現的故障,使系統恢復正常。
在分散式系統中,常見的故障檢測方法就是心跳機制,我們可以把它分為兩類:
- 固定心跳檢測策略
- 根據歷史心跳信息預測故障檢測策略
故障恢復策略
對於單點故障問題,往往採取主備策略,即當主節點故障後,從備節點中選出一個作為新的主節點。以繼續提供服務。
對於網路故障問題的解決方案,簡單來說就是C、A、P選擇的問題。
當分散式系統中出現網路故障時,對於高可用性要求嚴格的系統,會要求必須及時響應用戶的場景,就需要保AP放棄C的策略,對於數據一致性有嚴格要求的系統,就需要保CP放棄A的策略。
網路恢復問題也可以看做是數據恢復問題,即網路故障恢復之後節點之間數據進行同步的問題。
作者:李潘 出處:http://wing011203.cnblogs.com/ 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。