Hystrix特性spring
1.熔斷後端
當HystrixCommand請求後端服務失敗數量超過必定比例(默認50%), 斷路器會切換到開路狀態(Open). 這時全部請求會直接失敗而不會發送到後端服務,斷路器保持在開路狀態一段時間後(默認5秒),自動切換到半開路狀態(HALF-OPEN),這時會判斷下一次請求的返回狀況, 若是請求成功, 斷路器切回閉路狀態(CLOSED),不然從新切換到開路狀態(OPEN)bash
2.Fallback(降級)網絡
Fallback至關因而降級操做. 服務降級是指當請求後端服務出現異常的時候, 可使用fallback方法返回的值.app
3.資源隔離運維
將請求封裝在HystrixCommand中,而後這些請求在一個獨立的線程中執行,每一個依賴服務維護一個小的線程池(或信號量),在調用失敗或超時的狀況下能夠斷開依賴調用或者返回指定邏輯.分佈式
4.限流ide
限流就是信號量隔離(通常不會使用該模式)測試
註冊中心和服務提供者不須要改動,只須要改一下咱們的consumer便可ui
配置文件加入配置:
#打開Feign的Hystrix熔斷功能
feign:
hystrix:
enabled: true
複製代碼
FeignClient調用服務:
@Component
@FeignClient(value = "spring-cloud-eureka-pro",fallback = FeignServiceHystrix.class)
public interface FeignService {
@RequestMapping(value = "/hi")
public String hiService(@RequestParam(value = "name") String name);
}
複製代碼
Fallback 回調類:
@Component
public class FeignServiceHystrix implements FeignService{
@Override
public String hiService(@RequestParam(value = "name")String name) {
return "hi" +name+", this is failed messge";
}
}
複製代碼
測試,首先啓動註冊中心,provider,consumer
訪問consumer 的hi2方法
此時正常調用服務
將provider停掉,而後再次訪問
因爲此時啓用了熔斷功能,因此調用服務失敗以後進入fallback
若是將熔斷功能關閉的話,此時應該是返回調用異常的信息
#打開Feign的Hystrix熔斷功能
feign:
hystrix:
enabled: false
複製代碼
Hystrix能作什麼?
在經過第三方客戶端訪問(一般是經過網絡)依賴服務出現高延遲或者失敗時,爲系統提供保護和控制
在分佈式系統中防止級聯失敗
快速失敗(Fail fast)同時能快速恢復
提供失敗回退(Fallback)和優雅的服務降級機制
提供近實時的監控、報警和運維控制手段