admin管理员组文章数量:1794759
springCloud面试之Hystrix
什么是Hystrix
Hystrix是一个通过资源隔离实现服务熔断降级的中间件
Hystrix的作用这里我又画了一个简化版如下图 流程解释:
- 滚动窗口时间内请求量
- 滚动窗口时间内发生错误的请求量
通过三个角度讲一下资源隔离的必要性
非隔离的情况当某一个服务接口处理能力减慢时,处理线程占用公共线程的时间就会较长,如果该接口的请求流量上升,就会造成整个服务的处理能力下降;
Hystrix线程池隔离可以为每个接口(或者几个接口)设置单独的线程池,当该接口的线程池被占满时,只是该接口收到影响,而不会对其他接口造成影响;
Hystrix信号量隔离可以为每个接口(或者几个接口)设置单独的信号量,当该接口的线程池被占满时,只是该接口收到影响,而不会对其他接口造成影响
线程池隔离与信号量隔离对比 信号量隔离信号量是同步的,不能进行超时设置,当有大并发请求过来时,只有信号量大小的请求会进行真正的请求,其他的请求,只能fallback,而真正进行请求的线程,不能超时返回,只能等待服务端进行返回,结束本次请求,其他的线程才能再使用这个信号; 优点:轻量,没有线程上下文的切换;
- 优点:轻量,没有线程上下文的切换;
- 缺点:不能够设置超时时间;
- 使用场景:适合高并发,快速失败;以及不需要发送网络请求,只进行内存、缓存请求的场景;
默认的隔离策略,这里每个请求会分成两段,一个是请求command,一个是执行command;也就是说执行请求的线程和请求线程(Tomcat线程)分离,请求线程可以自由控制离开的时间,即超时时间; 通过将发送请求线程与执行请求的线程分离,可有效防止发生级联故障。当线程池或请求队列饱和时,Hystrix将拒绝服务,使得请求线程可以快速失败,从而避免依赖问题扩散
- 优点:可以设置超时等;
- 缺点:增加了排队、调度和上下文切换的开销;
- 使用场景:适合高并发,快速失败;以及不需要发送网络请求,只进行内存、缓存请求的场景;
信号量 | 否 | 否 | 否 | 是 | 是 | 小 |
线程池 | 是 | 是 | 是 | 是 | 是 | 大 |
springCloud面试之feign+ribbon+hystirx交互概览
后记如果不当之处欢迎指正~
本文标签: SpringCloudhystrix
版权声明:本文标题:springCloud面试之Hystrix 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686857806a111030.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论