天天看点

springboot+dubbo+zookeeper怎么设置熔断器并调用

由于分布式系统将不同模式做成不同的服务,在一个系统1中,可能会调用了不同服务,比如会调用服务A、B、C,

而服务跟服务之间也会相互调用的,比如服务D、E会调用服务A;

当调用服务A失败时,系统1、服务D、服务E都会失败了,这样由于一个服务有问题,从而导致多个系统或者服务不可用,产生了服务雪崩。

因此,提出一个熔断器,快速返回一个失败值(而不是在阻塞等待服务的返回,或者服务失败抛出来的异常导致调用者也失败了)

使用Hystrix,可以实现熔断器的功能:解决服务一连串的雪崩而产生。

1、在服务提供者(provider)和服务消费者(consumer)都引入jar包:

<!-- 熔断器 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>
        <!-- 熔断器 -->
           

2、在服务提供者和服务消费者应用上添加注解 @EnableHystrix

springboot+dubbo+zookeeper怎么设置熔断器并调用

3、在服务提供者去实现每一个接口的方法上添加注解 @HystrixCommand

springboot+dubbo+zookeeper怎么设置熔断器并调用

4、在消费者去消费每一个实现的接口上添加注解 @HystrixCommand(fallbackMethod = “heError”) 并实现熔断方法

springboot+dubbo+zookeeper怎么设置熔断器并调用

值得注意的是:每一个接口方法不管是服务提供者的实现上还是消费者去消费方法上若想实现熔断器,就必须每个方法上都加注解来实现该接口有熔断器

继续阅读