一、Hystrix 熔斷原理
Hystrix 是一個 Netflix 開源的庫,它實現了線程封閉、隔離、資源池、拒絕、斷路器、緩存等一系列機制。它最主要的作用就是在分布式系統中提供容錯能力,防止雪崩效應發生。
Hystrix 的熔斷器原理是在一定時間內,對於同一服務的請求次數超過了一定的閾值,並且失敗率達到了一定的比例,就會觸發熔斷器的斷路器打開,此時對於該服務的請求就會快速失敗,不再發送到服務提供者,而是直接調用斷路器的 fallback 方法返回一個默認的值。
Hystrix 的熔斷器具有自我診斷和自我修復能力,如果這個服務恢復了健康狀態,斷路器會自動關閉,請求又會發送到服務提供者。當然開發者也可以手動關閉和打開斷路器。
二、Hystrix 開關推薦使用什麼註解
Hystrix 的開關可以使用 @HystrixCommand 註解,它是一個在方法上註解,標註了該方法的熔斷邏輯和降級邏輯。如果該方法出現了異常或超時,Hystrix 會將其熔斷,觸發 fallback 邏輯。
@HystrixCommand 使用起來非常簡單,只需要在需要被熔斷的方法上添加註解,並指定 fallbackMethod。例如:
@HystrixCommand(fallbackMethod = "fallbackMethod") public String hystrixMethod(){ // 需要被熔斷的方法 } public String fallbackMethod(){ // 熔斷後調用的方法 }
三、Hystrix 怎麼讀
Hystrix 的英文發音為 hi-striks,這個單詞來源於 “hystric”,即急性疼痛的意思。不過 Mihai Nadas 在他的博客中說他在選這個名字的時候,絕對沒有想到 Hystrix 會如此成功,他只是想找一個比 Hystric 更容易搜索的單詞,所以選了 Hystrix。
四、Hystrix 原理
Hystrix 的實現原理包括線程池隔離、請求緩存、請求合併、限流、服務降級、熔斷、自我調節等幾個方面。其中最核心的是斷路器的實現。在一段時間內,如果請求次數超過了一個閾值,並且失敗率達到了一定的比例,斷路器會打開,這時後面的請求會快速失敗並直接調用熔斷後的 fallback 方法,從而起到保護服務的作用。
五、Hystrix 停用
Hystrix 默認是開啟的,但我們可以通過配置文件 hystrix.command.default.enabled=false 來停用 Hystrix,這樣不會使用 Hystrix 的任何功能,服務的異常將會立即拋到調用方,不會觸發熔斷和降級邏輯。
六、Hystrix 使用
在 Spring Boot 項目中,使用 Hystrix 非常簡單,首先需要引入 Hystrix 的依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
然後在需要熔斷的方法上添加 @HystrixCommand 註解,指定 fallback 方法即可。
七、Hystrix 熔斷器
Hystrix 的熔斷器是一個狀態機,有開啟狀態、關閉狀態和半開狀態三種。在關閉狀態下,所有請求都正常處理;在開啟狀態下,請求都會失敗,觸發 fallback;在半開狀態下,只有一部分請求會重新嘗試調用服務。斷路器的狀態會根據請求響應情況和時間進行自我調節。
八、Hystrix 降級
Hystrix 實現了服務的降級,即在服務不可用時,返回一個默認值或備用服務的結果,以提高服務的可用性和穩定性。在 Hystrix 中降級是通過 fallback 方法實現的,如果主邏輯出現異常,就會回退到 fallback 方法中,返回一個缺省的值或者從緩存中返回已緩存的數據等。
九、Hystrix 和 Sentinel
Hystrix 和 Sentinel 都是基於熔斷器的服務保護組件。相對而言,Hystrix 更加成熟穩定,用於生產環境和對穩定性、可用性要求較高的系統,而 Sentinel 用於開發和測試環境,適合對系統進行壓測和限流等操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/201161.html