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方法,避免了因为一个服务的的崩溃而造成雪崩的问题

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