SpringCloud微服务熔断器Hystrix如何使用
这篇文章主要介绍了SpringCloud微服务熔断器Hystrix如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringCloud微服务熔断器Hystrix如何使用文章都会有所收获,下面我们一起来看看吧。
什么是Hystrix
在日常生活用电中,如果我们的电路中正确地安置了保险丝,那么在电压异常升高时,保险丝就会熔断以便切断电流,从而起到保护电路安全运行的作用。
在货船中,为了防止漏水和火灾的扩散,一般会将货仓进行分割,避免了一个货仓出事导致整艘船沉没的悲剧,这就是舱壁保护机制。
Hystrix提供的熔断器也类似,在调用某个服务提供者时,当一定时间内请求总数超过配置的阈值,且窗口期内错误率过高,那Hystrix就会对调用请求熔断,后续的请求直接短路,进入降级逻辑,并执行本地的降级策略。
同时Hystrix也将系统中的服务提供者隔离起来,一个服务提供者延迟过高或者失败,并不会导致整个系统的失败,同时也能够控制调用这些服务的并发度。
总之,Hystrix 能使你的系统在出现依赖服务失效的时候,通过隔离系统所依赖的服务,防止服务级联失败,同时提供失败回退机制,更优雅地应对失效,并使你的系统能更快地从异常中恢复。
Hystrix实战
接着我们上篇文章中的dms服务,进行如下修改:
Feign 本身就支持Hystrix,不需要额外引入依赖。
1、首先修改调用方app服务的配置文件application.xml,开启hystrix
feign:
hystrix:
enabled: true
2、增加服务熔断处理类,实现DmsApi接口
@Component public class DmsHystrixImpl implements DmsApi { @Override public String findNameByCode(String code) { return "服务器故障"; } }
3、修改接口类注解,增加熔断处理类:fallback = DmsHystrixImpl.class;
(Spring Cloud Feign HTTP请求异常Fallback容错机制,它是基于Hystrix实现的,所以要通过配置参数feign.hystrix.enabled=true开启该功能)
@FeignClient(value = "dms",fallback = DmsHystrixImpl.class) public interface DmsApi { @RequestMapping(value="/dict/[code]", method = RequestMethod.GET) public String findNameByCode(@PathVariable("code") String code); }
4、增加异常代码,以便验证
@RestController public class DmsController implements DmsApi { @Override public String findNameByCode(String code) { Integer.parseInt("a"); switch (code){ case "0" : return "男"; case "1" : return "女"; default: return "未知"; } } }
5、启动项目,进行验证,返回正确结果。
关于“SpringCloud微服务熔断器Hystrix如何使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringCloud微服务熔断器Hystrix如何使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注蜗牛博客行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
评论