熔斷機制?
Hystrix 的熔斷機制就像是電路中的保險絲。當某個服務的失敗請求達到一定比例(例如 50%)或者在一定時間內(如 20 秒)失敗請求數量超過一定閾值(如 20 個)時,熔斷開關就會打開。此時,后續對該服務的請求將不再實際調用服務,而是直接返回預設的 fallback 內容,避免了無效的等待和資源浪費。經過一段時間(如 20 秒,即熔斷后的休眠窗口),熔斷開關會進入半開狀態,嘗試放行少量請求來探測服務是否恢復正常。如果這些請求成功,熔斷開關將關閉,恢復正常的服務調用;如果仍然失敗,開關將再次打開。?
隔離策略?
Hystrix 提供了兩種隔離策略:線程池隔離和信號量隔離。線程池隔離為每個依賴服務分配獨立的線程池,當某個服務出現問題導致線程池飽和時,不會影響其他服務的線程資源,從而防止故障擴散。例如,訂單服務調用庫存服務和支付服務,庫存服務的線程池滿了,不會影響支付服務的正常運行。信號量隔離則是通過限制并發請求數量來控制對服務的訪問,適用于一些調用延遲較低且對資源消耗較小的場景。?
降級機制?
當熔斷開關打開或者服務調用過程中出現異常時,Hystrix 會執行降級邏輯。降級邏輯通常是預先定義好的兜底方案,比如返回緩存中的數據、提供默認值或者簡單的錯誤提示。以電商系統為例,當商品詳情服務出現故障時,降級邏輯可以返回商品的基本信息(如商品名稱、圖片等),而不是讓用戶看到空白頁面,盡可能保證用戶體驗。