故障隔離
什么是故障隔離?
故障隔離,就是采用一定策略,以實作當某個模塊發生故障時,不會影響其他模塊繼續提供服務,以保證整個系統的可用性,它可以避免分布式系統出現大規模的故障,甚至是癱瘓,降低損失,
分布式故障隔離策略
分布式系統中的故障策略有很多,基本可以分為兩個維度:
- 以功能模塊為粒度進行隔離,各個功能/服務模塊之間松耦合,一個功能/服務模塊出現故障,不會影響其他功能/服務模塊,根據功能模塊或者服務由執行緒執行還是行程執行,可以分為執行緒級隔離和行程級隔離,
- 通過資源隔離來實作,系統中各個模塊擁有自己獨立的資源,不會發生資源爭搶,從而提升系統性能,根據資源所屬粒度,可以劃分成行程級隔離、虛擬機隔離、服務器隔離和機房隔離,
執行緒級隔離
執行緒級故障隔離,是指使用不同的執行緒池處理不同的請求任務,當某種請求任務出現故障時,負責其他請求任務的執行緒池不會受到影響,即會繼續提供服務,從而實作故障隔離,
執行緒級的故障隔離策略,在生產環境中較為常用,尤其是針對單體應用,系統再實作執行緒級隔離后,執行緒間通信通常使用共享變數來實作,它是一個行程中的全域變數,在行程的各個縣城間可以同時使用,
行程級隔離
分布式系統按照功能分為不同的行程,分不到相同或者不同的機器中,如果系統的行程分不到不同的機器,從資源的角度來看,也可以算作主機級別的故障隔離,
系統實作行程級隔離后,行程間的協同必須通過行程間通信來實作,行程間通信可以分為兩類:
- 如果行程在同一個機器上,可以通過管道、訊息佇列、信號量、共享記憶體等方式,
- 如果行程分布在不同機器上,可以通過遠程呼叫來實作,
資源隔離
資源隔離就是將分布式系統的所有資源分成幾個部分,每部分資源負責一個模塊,這樣系統各個模塊就不會爭搶資源,即資源之間相互不干擾,這種方式不僅可以提高硬體資源利用率,也便于系統的維護和管理,大幅提升系統性能,
容器是微服務架構的基礎,它本質上是作業系統的一個行程,但是與普通行程有以下區別:
- 普通行程有很大的計算或者記憶體需求時,可能會占滿物理機上的所有CPU、記憶體資源,導致其他行程沒有資源可用,
- 容器可以實作資源限制,讓每個容器占用的資源都有一個上限,這個上限值限定了該容器的處理能力,一個容器使用的資源不會影響到其他容器的資源,從而避免資源爭搶,提高性能,
從資源隔離的角度看,還可以有更多故障隔離策略,包括虛擬機隔離、集群隔離、機房隔離等,這些策略會跨集群、跨地域,
下面是關于各種故障隔離策略的詳細比較,

用戶級別故障隔離
用戶級別故障隔離是指將不同用戶分開,當系統出現故障時,只影響部分用戶,而不是全體用戶,
常用的用戶級別故障隔離策略包括資料分片、負載均衡等,
- 資料分片可以將不同用戶的資料存盤到不同的資料庫,即一個資料庫只存盤部分用戶的資訊,這樣當某個資料庫出現故障時,僅影響該故障資料庫存盤的用戶,不會影響其他用戶,
- 當處理請求的某個服務器出現故障時,負載均衡轉發請求時,只會影響該故障服務器負責的用戶請求,不會影響其他服務器正常提供服務,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545514.html
標籤:Java
