七、 短路器開啓之後fallback降級機制

7.1 四種情況fallback降級機制

 

(1)[error] Hystrix調用各種接口,或者訪問外部依賴,mysql,redis,zookeeper,kafka,等等,如果出現了任何異常的情況

比如說報錯了,訪問mysql報錯,redis報錯,zookeeper報錯,kafka報錯。

 

(2)[reject] 對每個外部依賴,無論是服務接口,中間件,資源隔離,對外部依賴只能用一定量的資源去訪問,線程池/信號量,如果資源池已滿。

 

(3)[timeout]訪問外部依賴的時候,訪問時間過長,可能就會導致超時,報一個TimeoutException異常

上述三種情況,都是我們說的異常情況,對外部依賴的東西訪問的時候出現了異常,發送異常事件到短路器中去進行統計。

 

(4)[circuit breaker]如果短路器發現異常事件的佔比達到了一定的比例,直接開啓短路,circuit breaker

 

上述四種情況,都會去調用fallback降級機制

7.2 兩種經典的降級機制:純內存數據,默認值

HystrixCommand是實現getFallback方法

HystrixObservableCommand是實現resumeWithFallback方法

 

7.3 HystrixCommand.getFallback()最大允許的併發請求數量

fallback.isolation.semaphore.maxConcurrentRequests

 

這個參數設置了HystrixCommand.getFallback()最大允許的併發請求數量,默認值是10,也是通過semaphore信號量的機制去限流

 

如果超出了這個最大值,那麼直接被reject

HystrixCommandProperties.Setter()

   .withFallbackIsolationSemaphoreMaxConcurrentRequests(int value)

  //這個參數設置了HystrixCommand.getFallback()最大允許的併發請求數量,默認值是10,也是通過semaphore信號量的機制去限流

                            //如果超出了這個最大值,那麼直接被reject   ==>fallback.isolation.semaphore.maxConcurrentRequests

                            .withFallbackIsolationSemaphoreMaxConcurrentRequests(10)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章