快捷搜索:

Hystrix之服务降级、服务熔断、服务限流

如果想知道Hystrix是如何运行的可以参考github官网源码讲解:

我们可以在本地构建一个微服务提供者,提供8001两个接口,一个直接返回,一个sleep(3)秒后返回,正常访问一个是马上响应,一个是等待3秒响应。上述在非高并发情形下,还能勉强满足,但是在高并发情况下就会量变引起质变。当我们通过Jmeter软件进行压力测试模拟 200次/秒*100次循环的20000次并发访问第二个sleep(3)秒的接口,会直接影响第一个直接返回的接口的响应速度。

导致原因:8001同一层次的其他接口服务被困死,因为tomcat线程里面的工作线程已经被挤占完毕,而此时客户端调用8001,客户端访问响应缓慢,转圈圈,得不到响应;

正因为有上述故障或不佳表现,才有我们的降级/容错/限流等技术诞生。

如何解决及解决的要求:

1、超时导致服务器变慢(转圈):超时不再等待

2、出错(宕机或程序运行出错):要有一个最终处理兜底程序

解决:

    对方服务(8001)超时了,调用者(80)不能一直卡死等待,必须有服务降级 对方服务(8001)down机了,调用者(80)不能一直卡死等待,必须有服务降级 对方服务(8001)OK,调用者(80)自己出故障或有自我要求(自己的等待时间小于服务提供者),自己处理降

服务降级---

服务器忙,请稍候再试,不让客户端等待并立刻返回一个友好提示,fallback

哪些情况会触发降级:程序运行异常,超时,服务熔断触发服务降级,线程池/信号量打满也会导致服务降级

服务熔断--

类比保险丝达到最大服务访问后,直接拒绝访问,拉闸限电,然后调用服务降级的方法并返回友好提示。

实现:服务的降级->进而熔断->恢复调用链路

服务限流--因为Hystrix停止维护了,所以后期补上阿里的sentinel讲解配置

秒杀高并发等操作,严禁一窝蜂的过来拥挤,大家排队,一秒钟N个,有序进行

经验分享 程序员 微信小程序 职场和发展