服務熔斷之斷路器模式

2021-10-11 02:16:55 字數 771 閱讀 7194

在分布式系統中,一次完整的請求可能需要經過多個服務模組的呼叫,請求在多個服務中傳遞,服務對服務的呼叫會產生新的請求,這些請求共同組成了這次請求的呼叫鏈。當呼叫鏈中的某個環節,特別是下游服務不可用時,將會導致上游服務呼叫方不可用,最終將這種不可用的影響擴大到整個系統,導致整個分布式的不可用,引起服務雪崩現象。

為了避免這種情況,在下游服務不可用時,保護上游服務的可用性顯得極其重要。對此我們可以通過熔斷的方式,通過及時熔斷服務呼叫方和服務提供方的呼叫鏈,保護服務呼叫方資源,防止服務雪崩現象的出現。

使用斷路器設計模式,能夠有效地保護服務呼叫方的穩定性,它能夠避免服務呼叫者頻繁呼叫可能失敗的服務提供者,防止服務呼叫者浪費cpu、執行緒和io資源等,提高服務整體的可用性。

所以,熔斷設計的目的是在服務提供方不可用時保護服務呼叫方的資源,減少服務呼叫中無用的遠端呼叫。

斷路器模式實現

斷路器一般有關閉、開啟和半開三種狀態組成

關閉狀態(closed): 服務呼叫者可以呼叫服務提供者

開啟狀態(open): 對應用的請求會立即返回錯誤響應或執行預設的失敗降級邏輯,而不呼叫服務提供者。

半開狀態(half-open): 允許應用程式一定數量的請求去呼叫服務。斷路器會對成功執行的呼叫進行計數,達到閾值後,會認為被呼叫服務恢復正常,斷路器狀態回到「關閉」狀態,如果有請求出現失敗,則回到「開啟」狀態。

hystrix詳細實現原理可參考:

其他實現

微服務之Hystrix斷路器

hystrix是乙個用於處理分布式系統的延遲和容錯的開源庫,在分布式系統裡,許多依賴不可避免的會呼叫失敗,比如超時 異常等,hystrix能夠保證在乙個依賴出問題的情況下,不會導致整體服務失敗,避免級聯故障,以提高分 布式系統的彈性。斷路器 本身是一種開關裝置,當某個服務單元發生故障之後,通過斷路器...

Spring cloud 之 斷路器

在微服務架構中,根據業務來拆分成乙個個的服務,服務與服務之間可以通過rpc介面的形式相互呼叫。為了保證服務高可用,單個服務通常會集群部署。由於網路或者自身原因,服務不能保證100 可用,如果單個服務出現問題,呼叫這個服務就會出現執行緒阻塞,如果此時湧入大量的請求,servlet容器中的執行緒資源就會...

微服務斷路器Hystrix思考

1 超時機制 2 斷路器 hystrix,當你訪問數量超過一定時,進行報錯 它具體是如何做到的呢?hystrix有兩種形式進行熔斷策略的 執行緒池,訊號量 執行緒池,將請求的執行緒交給執行緒池,靠執行緒池的拒絕策略來控制 訊號量模式,semaphone,訊號量每次減一,當執行完,將訊號量釋放 隔離方...