學習SpringCloud(3)斷路器Hystrix

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)和優雅的服務降級機制

  • 提供近實時的監控、報警和運維控制手段

相關文章
相關標籤/搜索