Hystrix 服務熔斷降級

2021-10-06 20:09:58 字數 3128 閱讀 3896

斷路器狀態

hystrix屬於spring cloud netflix中的套件之一,spring cloud netflix其中還包括eureka,feign,ribbon,zuul,bus。本文僅簡單講一下hystrix這個熔斷降級框架。

為什麼不講sentinel呢,因為sentinel的官方文件全中文,並且使用也很方便,只要是個正常人,我覺得不需要單寫一篇文章來講,所以我只寫過alibabaseata的文章。

@enablehystrix註解的作用和@enablecircuitbreaker註解的作用一樣,@enablehystrix註解對enablecircuitbreaker註解進行了封裝。所以使用hystrix時用哪個註解都可以.

首先需要區分的是,在ribbon中的請求超時hystrix中的超時是不同的,如果hystrix中配置timeoutinmilliseconds<ribbon中的readtimeout,這可能並不是你想要的結果,因為一旦觸發hystrix中的超時就會立即產生服務熔斷,不會達到重試的目的。timeoutinmilliseconds的配置應 >ribbon (1 + maxautoretries + maxautoretriesnextserver) * readtimeout

@defaultproperties註解是用在controller上的預設配置,在控制器方法上沒有使用@hystrixcommand時,就會使用@defaultproperties的配置。

@defaultproperties

(defaultfallback =

"defaultfallback"

,commandproperties =

)//hystrix 定義全域性 設定

public

class

homecontroller

)public string getorder()

throws executionexception, interruptedexception

private string defaultfallback()

}

預設情況下,控制器內其他方法超時都是1秒,僅getorder的配置會被替換,變成5秒。

配置中我們可以看見commandproperties配置了超時,commandproperties接受的是@hystrixproperty的列表,所以其中還有其他的配置可以設定。

我們可以在com.netflix.hystrix.hystrixcommandproperties中找到所有的配置項。

其中有隔離策略,斷路器開啟後的等待時間,錯誤閾值等等。

比如execution.isolation.strategy直譯就是執行隔離策略,預設的情況下是executionisolationstrategy.thread,意思就是執行緒隔離。

隔離策略中還有乙個策略是executionisolationstrategy.semaphore,意思就是訊號量,你可以理解為qps。

預設情況下是根據threadpoolkeygroupkey進行區分。

如果沒有規定,groupkey的預設值是使用@hystrixcommand標註的方法所在的類名

這就相當於對服務的介面進行限流,當超過閾值後就會觸發熔斷

如果想更改為訊號量模式可以使用:

@hystrixproperty(name="execution.isolation.strategy", value="semaphore")

更改訊號量模式下固定時間內(預設是1秒)最大請求數限制:

@hystrixproperty(name="execution.isolation.semaphore.maxconcurrentrequests", value="10")

threadpoolproperties

@defaultproperties@hystrixcommand中 還有threadpoolproperties的配置。

在預設使用執行緒池隔離時,你可以通過threadpoolproperties配置執行緒池大小,如果需要可以也可以修改執行緒池佇列大小。

@defaultproperties

(defaultfallback =

"defaultfallback"

, threadpoolproperties =

, commandproperties =

}

hystrix斷路器有3種狀態:

上面講了如何通過@hystrixproperty自己配置一些額外設定,現在就可以使用它對circuitbreaker.sleepwindowinmilliseconds進行配置,這就是在斷路器處於開啟狀態下,需要等待多久會進入半開狀態,預設值是5秒。

hystrix實現服務降級,熔斷

新增pom org.springframework.cloudgroupid spring cloud starter netflix hystrixartifactid dependency 一 服務降級 1 在服務端實現 使用註解 hystrixcommand,在超時,程式異常的情況下都會使用備...

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

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

Hystrix熔斷機制與服務降級

中文 翻譯 在分布式環境中,許多服務依賴中的一些服務發生失敗是不可避免的。hystrix是乙個庫,通過新增延遲容忍和容錯邏輯,幫助你控制這些分布式服務之間的互動。hystrix通過隔離服務之間的訪問點 停止跨服務的級聯故障以及提供回退選項來實現這一點,所有這些都可以提高系統的整體彈性 1 雪崩效應 ...