Spring Cloud(七)熔斷機制

2021-09-22 02:19:56 字數 1611 閱讀 1681

服務熔斷也稱服務隔離或者過載保護。在微服務應用中,服務存在一定的依賴關係,形成一定的依賴鏈。如果某個目標服務呼叫慢或者有大量超時,造成服務不可用,間接導致其他的依賴服務不可用,最嚴重的可能會阻塞整條依賴鏈,最終導致業務系統崩潰(又稱雪崩效應)。此時,對該服務的呼叫執行熔斷,對於後續請求,不再繼續呼叫該目標服務,而是直接返回,從而可以快速釋放資源。等到目標服務情況好轉後,則可恢復其呼叫。

在sping cloud框架裡,熔斷機制通過hystrix實現。hystrix會監控微服務間呼叫的狀況,當失敗的呼叫達到一定閥值((5秒之內發生20次失敗是hystrix定義的預設值),就會啟動熔斷機制。原本計畫被呼叫的服務將不會被呼叫,取而代之的hystrix會找到配置好的方法,進行快速的返回。

新增pom依賴

org.springframework.cloud

spring-cloud-starter-netflix-hystrix

使用hystrix,主程式類上新增@enablecircuitbreaker註解

@enablediscoveryclient

@enablefeignclients

@enablecircuitbreaker

public static void main(string args) }

增加斷路器,新增fallback屬性。

@feignclient(name="zuul-server",fallback=apiclientfallback.class)

public inte***ce apiclient

@component

class apiclientfallback implements apiclient

@override

public weatherresponse getdatabycityid(string cityid)

}

feign.client.config.feignname.connecttimeout=5000

feign.client.config.feignname.readtimeout=5000

feign.hystrix.enabled=true

服務執行後,我們斷掉獲取城市列表的服務,可以看到如下介面。程式並沒有出現異常,而是取到了我們設定的預設值。我們再斷掉獲取天氣資訊的服務,可看到介面展現了我們異常處理的結果。

通過**實踐可以看到,由於我們採取了熔斷的策略,當我們宕調某個服務時,系統並沒有出現異常,而是在我們處理的範圍內正常執行。在我們的配置檔案中,可以看到我們設定了超時時間。當我們服務間讀取或者呼叫超過超時時間時,即可觸發熔斷,以防止由於某個服務異常或者執行時間超長,服務壓力過大,系統效能降低的情況發生。

原始碼位址為:

五 springcloud服務熔斷

服務提供方宕機或者請求太太超出自己承受範圍,則熔斷 註解實現 基於hystrix,訪問傳入負數則報錯,當10次有2次出錯則斷開,並保持一段時間逐漸恢復。熔斷 hystrixcommand fallbackmethod paymentinfo timeout handler commandproper...

SpringCloud 熔斷引數配置說明

原 2017年06月26日 17 57 42 jack281706 hystrix是由netflix建立乙個類庫。在微服務的分布式環境中,系統存在許多服務依賴。在高併發訪問下,這些依賴的穩定性與否對系統的影響非常大,但是依賴有很多不可控問題 如網路連線緩慢,資源繁忙,暫時不可用,服務離線等。hyst...

SpringCloud配置熔斷 負載均衡

首先的是pom的依賴 eureka依賴 org.springframework.cloud groupid spring cloud starter netflix eureka client artifactid dependency feign依賴 org.springframework.clo...