熔斷降級

1、概念(參考:https://blog.csdn.net/xiaojin21cen/article/details/88373447)摘要

熔斷:如果某個目標服務調用慢或者有大量超時,此時,熔斷該服務的調用,對於後續調用請求,不在繼續調用目標服務,直接返回,快速釋放資源。如果目標服務情況好轉則恢復調用。

降級:當服務器壓力劇增的情況下,根據當前業務情況及流量對一些服務和頁面有策略的降級,以此釋放服務器資源以保證核心任務的正常運行。

2、SpringCloud使用Hystrix先熔斷後降級

參考:https://my.oschina.net/u/2342969?q=Hystrix  

           https://mrbird.cc/Spring-Cloud-Hystrix-Circuit-Breaker.html

本質是客戶端熔斷(eureka消費端熔斷)

基本工作過程:

基本使用思路:

2-1、先熔斷:  打開Hystrix的斷路器。

@EnableCircuitBreaker

2-2、後降級:(客戶端)消費者使用@HystrixCommand命令,並且實現回退方法。

@HystrixCommand(fallbackMethod = "自定義方法")

2-3、消費者調用多個生產者服務可以開啓異步(AsyncResult)模式。

    
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.command.AsyncResult;

    //fallbackMethod 降級方法。
    @HystrixCommand(fallbackMethod = "testAsyncError")
    public Future<String> testAsync(){
    return new AsyncResult<List<MongoDBTest>>() {
            @Override
            public List<MongoDBTest> invoke() {
                //調用服務生產者服務邏輯
                //... ...
            }
        };
    }
    
    public String testAsyncError(String abc){
       System.out.println("=================降級邏輯處理==================");
       return null;
    }

2-4、 @HystrixProperty 

 隔離策略

@HystrixProperty(name=”execution.isolation.strategy”, value=”THREAD”)  線程隔離 

@HystrixProperty(name=”execution.isolation.strategy”, value=”SEMAPHORE”)  信號隔離 (建議使用信號隔離,無線程開銷,速度優良)

 自定義超時時間 @HystrixProperty(name=”execution.isolation.thread.timeoutinMilliseconds”,value=”2000”) 默認1000ms
是否開啓超時時間 @HystrixProperty(name=”execution.timeout.enabled”, value=”false”) 

 

 

 

配置信號量

 

@HystrixProperty(name=”execution.isolation.semaphore.maxConcurrentRequests”, value=”2”)

當信號量(即調用該接口的併發數量)大於2時,進入降級邏輯處理。(雖然可以做限流,但不提倡使用)

配置最小請求數 @HystrixProperty(name=”circuitBreaker.requestVolumeThreshold”, value=”20”) 默認最小請求數20,需要結合errorThresholdPercentage來使用。
配置失誤請求比例 @HystrixProperty(name=”circuitBreaker.errorThresholdPercentage”, value=”50”) 默認請求失誤的機率爲50%,在滿足requestVolumeThreshold的閾值,超過半數請求失敗的情況,觸發熔斷機制。

 

 

 

 

 2-5、請求合併,當一個消費者調用多個服務時,可以將所有調用服務合併成一個服務。(不研究)

 2-6、整合 Dashboard儀表盤 

3、傳統服務使用Sentinel熔斷降級 

 

 

 

 

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