本篇文章为大家展示了Hystrix中如何使用进行熔断处理 ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
熔断处理什么呢?在微服务项目中,有很多的服务,在服务消费者调用服务提供者的时候可能会出现网络异常或者请求超时或者阻塞等等一系列问题,不过不进行处理的话,就可能导致,长时间等待,进程阻塞,最终导致系统瘫痪。
所以就有了熔断处理,当服务提供者的接口不能访问或者异常异常时,进行降级处理,服务消费者能够正常的处理返回特定是数据。从而达到容灾的目的。
看了一下Hystrix ,其实有很多东西,我们就先来看看Hystrix 的简单使用,下面我们就直接使用Fegin 来实现一个简单的熔断处理的操作。
其实我们完全可以在上一节的ribbon-consumer 的基础上来,我这里为了保持独立性,所以copy 了一份ribbon-consumer 改成hystrix-consumer。pom文件引入fegin 的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
在主类中增加@EnableFeignClients,其实这里仅仅使用hystrix 的话,可以使用@EnableCircuitBreaker。
配置文件中开启熔断处理,将feign.hystrix.enabled设置为tue
#开启熔断处理
feign.hystrix.enabled=true
重点来啦,我们上一节在HelloService 中调服务提供者的接口,所以要做熔断处理的话,就需要在这里进行降级处理,就需要写一个降级处理的方法,如果服务提供者的接口不通,就调用这个方法,返回给客户端。所以我们在server层创建一个fallback 文件夹,在fallback 包下创建HelloServiceFallback类实现 HelloService。内容如下:
@Component
public class HelloServiceFallback implements HelloService {
@Override
public String hello() {
return "hello error";
}
@Override
public String hello2(@RequestParam(value = "name") String name) {
return "hello2 error";
}
@Override
public String hello3(@RequestParam(value = "name") String name, @RequestParam(value = "age") String age) {
return "hello3 error";
}
@Override
public String hello4(@RequestBody Map<String, Object> parms) {
return "hello4 error";
}
}
注意给整个类加上@Component 注解,然后就是实现HelloService 中的方法啦。
然后我们需要在HelloService 中的@FeignClient 注解做修改
@FeignClient(name = "ribbon-provider",fallback = HelloServiceFallback.class)
name 用来指定服务提供者的服务名,fallback 用来指定降级处理的类。这里就是我们刚刚写HelloServiceFallback。好了我们来启动项目测试一下。启动这三个项目,分别是注册中心,服务提供者hystrix-consumer,服务消费者ribbon-provider-9004然后我们在界面输入
http://localhost:9006/fegin
然后关闭服务提供者,再调接口试试。
可以看到服务提供者的接口断掉之前和之后返回的结果是不一样的。说明我们的熔断处理是生效的啦。
上述内容就是Hystrix中如何使用进行熔断处理 ,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。