Hystrix中如何使用进行熔断处理
本篇文章为大家展示了Hystrix中如何使用进行熔断处理 ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
为武冈等地区用户提供了全套网页设计制作服务,及武冈网站建设行业解决方案。主营业务为成都做网站、网站建设、武冈网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
前言
熔断处理什么呢?在微服务项目中,有很多的服务,在服务消费者调用服务提供者的时候可能会出现网络异常或者请求超时或者阻塞等等一系列问题,不过不进行处理的话,就可能导致,长时间等待,进程阻塞,最终导致系统瘫痪。
所以就有了熔断处理,当服务提供者的接口不能访问或者异常异常时,进行降级处理,服务消费者能够正常的处理返回特定是数据。从而达到容灾的目的。
看了一下Hystrix ,其实有很多东西,我们就先来看看Hystrix 的简单使用,下面我们就直接使用Fegin 来实现一个简单的熔断处理的操作。
pom.xml
其实我们完全可以在上一节的ribbon-consumer 的基础上来,我这里为了保持独立性,所以copy 了一份ribbon-consumer 改成hystrix-consumer。pom文件引入fegin 的依赖
org.springframework.cloud
spring-cloud-starter-openfeign
在主类中增加@EnableFeignClients,其实这里仅仅使用hystrix 的话,可以使用@EnableCircuitBreaker。
application.properties
配置文件中开启熔断处理,将feign.hystrix.enabled设置为tue
#开启熔断处理
feign.hystrix.enabled=true
fallback
重点来啦,我们上一节在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 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中如何使用进行熔断处理 ,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
网页标题:Hystrix中如何使用进行熔断处理
文章转载:http://azwzsj.com/article/jspijj.html