SpringCloud入門04---微服務-斷路器Hystrix

什麼是Hystrix?
Hystrix是Netflix所創造的一個庫,這個庫實現了斷路器的功能。
爲什麼需要斷路器?
假設有3個服務,分別爲:A、B、C,其中A調用B,B調用C,即:A–>B–>C
當C不可用時,會導致調用鏈中的級聯失敗,發生雪崩效應,如下:
A——>B——>C

A——>B ——>C

A ——>B ——>C
加有刪除線爲服務不可用的狀態,可以看到:由於C不可用,導致了A和B都不可用了。這個時候就需要一個機制來避免這樣的狀態發生,當B發現C不可用的時候,將不再請求C服務,而是直接由默認操作來返回特點的值。

斷路器一般在消費者服務中使用,我們就在SpringCloud入門03—微服務-服務網關的基本使用的基礎上進行整改添加斷路器
1.添加pom依賴

        <!--引入斷路器hystrix依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

2.在啓動類上添加註解@EnableCircuitBreaker如圖
在這裏插入圖片描述
3.配置application.properties文件開啓斷路器添加如下配置

#打開hystrix配置
feign.hystrix.enabled=true

4.修改SpringCloud入門02—微服務-提供者與消費者消費者1.4編寫Service代碼如下

												//此類爲本接口的實現類
@FeignClient(name = "spring-cloud-Zuul",fallback = Myhystrix.class)//此值要與eureka中的名稱對應
public interface Test {
    @GetMapping("/zuulCity/city/findAll")//此路徑也要與要訪問的接口相對應
    String test();
}

並編寫實現類

@Service
public class Myhystrix implements Test {
    @Override
    public String test() {
           return "調用備用服務或者返回相同結構的返回值";
    }
}

5.作用分析
到這就基本配置完成了,當我們調用Test接口中的test方法時相對應的服務器出現問題,就會重新調用Test接口的實現類中的test方法,避免了因爲一個服務的的崩潰而造成雪崩的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章