簡介
Hystrix是由Netflix開源的一個延遲和容錯庫,用于隔離訪問遠程系統、服務或者第三方庫,防止級聯失敗,從而提升系統的可用性與容錯性。Hystrix主要通過以下幾點實現延遲和容錯。
包裹請求:使用HystrixCommand(或HystrixObservableCommand)包裹對依賴的調用邏輯,每個命令在獨立線程中執行。這使用到了設計模式中的“命令模式”。
跳閘機制:當某服務的錯誤率超過一定閾值時,Hystrix可以自動或者手動跳閘,停止請求該服務一段時間。
資源隔離:Hystrix為每個依賴都維護了一個小型的線程池(或者信號量)。如果該線程池已滿,發往該依賴的請求就被立即拒絕,而不是排隊等候,從而加速失敗判定。
監控:Hystrix可以近乎實時地監控運行指標和配置的變化,例如成功、失敗、超時、以及被拒絕的請求等。
回退機制:當請求失敗、超時、被拒絕,或當斷路器打開時,執行回退邏輯。回退邏輯可由開發人員自行提供,例如返回一個缺省值。
自我修復:斷路器打開一段時間后,會自動進入“半開”狀態。
fegin已經集成了hystrix,所以我們直接在上一章springcloud-Feign中添加代碼
添加斷融類:
@Component
public class FeignClientTestFallback implements FeignTestClient {
@Override
public String test(String name) {
return name + "您好,提供者調用失敗!可能是服務未啟用";
}
}
FeignTestClient接口中的@FeignClient注解添加屬性:
啟動注冊中心、提供者、feign消費者可以看到能正常訪問:
此時,停用提供者provider,再次訪問http://localhost:8883/feign/test/wangshilin
之前遇到過一個小問題,就是配置什么的都沒有錯,報500異常錯誤,百思不得其解,網上查了好多資料都沒有解決,最后clean install了一下好使了。。。以此記錄下日常小坑