簡介
Hystrix是由Netflix開源的一個延遲和容錯庫,用于隔離訪問遠程系統(tǒng)、服務(wù)或者第三方庫,防止級聯(lián)失敗霞捡,從而提升系統(tǒng)的可用性與容錯性。Hystrix主要通過以下幾點實現(xiàn)延遲和容錯薄疚。
包裹請求:使用HystrixCommand(或HystrixObservableCommand)包裹對依賴的調(diào)用邏輯碧信,每個命令在獨立線程中執(zhí)行。這使用到了設(shè)計模式中的“命令模式”街夭。
跳閘機制:當某服務(wù)的錯誤率超過一定閾值時砰碴,Hystrix可以自動或者手動跳閘,停止請求該服務(wù)一段時間板丽。
資源隔離:Hystrix為每個依賴都維護了一個小型的線程池(或者信號量)呈枉。如果該線程池已滿,發(fā)往該依賴的請求就被立即拒絕埃碱,而不是排隊等候猖辫,從而加速失敗判定。
監(jiān)控:Hystrix可以近乎實時地監(jiān)控運行指標和配置的變化砚殿,例如成功啃憎、失敗、超時似炎、以及被拒絕的請求等辛萍。
回退機制:當請求失敗悯姊、超時、被拒絕贩毕,或當斷路器打開時悯许,執(zhí)行回退邏輯《保回退邏輯可由開發(fā)人員自行提供岸晦,例如返回一個缺省值。
自我修復(fù):斷路器打開一段時間后睛藻,會自動進入“半開”狀態(tài)启上。
fegin已經(jīng)集成了hystrix,所以我們直接在上一章springcloud-Feign中添加代碼
添加斷融類:
@Component
public class FeignClientTestFallback implements FeignTestClient {
@Override
public String test(String name) {
return name + "您好店印,提供者調(diào)用失敻栽凇!可能是服務(wù)未啟用";
}
}
FeignTestClient接口中的@FeignClient注解添加屬性:
啟動注冊中心按摘、提供者包券、feign消費者可以看到能正常訪問:
此時,停用提供者provider炫贤,再次訪問http://localhost:8883/feign/test/wangshilin
之前遇到過一個小問題溅固,就是配置什么的都沒有錯,報500異常錯誤兰珍,百思不得其解侍郭,網(wǎng)上查了好多資料都沒有解決,最后clean install了一下好使了掠河。亮元。。以此記錄下日常小坑