Hystrix學習(3)隔離

2021-08-18 23:53:22 字數 804 閱讀 5358

乙個形象的解釋是:對系統請求按型別劃分成若干個的小島,當某個小島被火少光了,不會影響到其他的小島。
hystrix依賴的隔離架構,如下圖:

hystrix在使用者請求和服務之間加入了執行緒池。

hystrix為每個依賴呼叫分配乙個小的執行緒池,如果執行緒池已滿呼叫將被立即拒絕,預設不採用排隊.加速失敗判定時間。執行緒數是可以被設定的。

原理 使用者的請求將不再直接訪問服務,而是通過執行緒池中的空閒執行緒來訪問服務,如果執行緒池已滿,則會進行降級處理,使用者的請求不會被阻塞,至少可以看到乙個執行結果(例如返回友好的提示資訊),而不是無休止的等待或者看到系統崩潰。

其本質是將服務視為資源,當請求該資源的數量超過了執行緒池中的數量限制時則不可以再對該資源進行訪問,從而保護該資源不會過載而造成阻塞。

例如:將銀行的櫃員視窗看成服務,視窗外是排隊辦理業務的客戶,假定每個客戶的業務需要5分鐘,則越靠後的使用者等待時間越長。同時,排隊的人越多,占用的空間越多(銀行大廳被擠爆,導致想去別的視窗辦理業務的人根本無法進入大廳,甚至排隊排到了大廳門外,此時已經雪崩)。執行緒池則規定了每個視窗前可以排隊的人數上限(例如10人),此時新來的第11人是不可以再到這個視窗前排隊的,從而保證該視窗不會因為排隊人數過多而阻塞。第11人獲得的返回結果可以是去其他視窗辦理,或者是無法辦理。這時大廳內還有足夠的空間留給其他視窗辦理業務的人員進出。a視窗排滿了, 但是不影響b視窗的正常使用。這就是隔離的效果。如果不隔離,則會發生所有資源都被a視窗占用,其他視窗根本無法正常運作。

hystrix服務隔離

目錄 一 隔離方法 二 執行緒隔離 三 訊號量隔離 原理 使用乙個執行緒池來儲存當前請求,執行緒池中線程對當前請求進行處理,可以設定任務的超時時間,對於 堆積的請求可以入執行緒池佇列。優點 採用執行緒池佇列,因此可以解決流量洪峰的問題,起到了削鋒的功能。並且可以非同步呼叫,可以設定線 程池的大小,控...

Hystrix隔離策略

hystrix的資源隔離策略分為兩種 執行緒池和訊號量。說到資源隔離,我們就要明白為什麼需要資源隔離。在乙個分布式系統中,服務之間都是相互呼叫的,如下圖所示 例如,我們容器 tomcat 配置的執行緒個數為1000,從服務a到服務r,其中服務i的併發量非常的大,需要500個執行緒來執行,此時,服務i...

Hystrix熔斷 服務降級 執行緒隔離

初識教程 宣告下 1 執行緒隔離已經在hystrix內部實現了,所以這裡只需要考慮熔斷和降級問題 2 hystrix主要解決雪崩問題 3 當消費端的請求超過降級等待時間,進行降級返回 4 預設情況下當連續請求20次,超時響應率達到百分之五十則circuit breaker進入open狀態5秒,5秒內...