Spring Cloud 组件 —— hystrix

谁说我不能喝 提交于 2020-01-10 20:26:13

作用与功能

① 资源隔离, 每个依赖配备单独的线程池,为每个依赖提供一个小的线程池(或信号),如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。
② 依赖超时,可配置依赖调用超时时间,超时时间一般设为比99.5%平均时间略高即可.当调用超时时,直接返回或执行fallback逻辑。
③ 依赖调用结果分:成功,失败(抛出异常),超时,线程拒绝,短路。 请求失败(异常,拒绝,超时,短路)时执行fallback(降级)逻辑
④ 提供熔断器组件,可以自动运行或手动调用,停止当前依赖一段时间(10秒内任意请求直接被禁止),熔断器默认错误率阈值为50%,超过将自动运行。
⑤ 命令模式, 使用命令模式HystrixCommand(Command)包装依赖调用逻辑,每个命令在单独线程中/信号授权下执行。

 

概念

命令模式:
1)可以使用请求配置对象(调用者)。使代码可扩展,当需要增加实现时,只需继承/实现”命令”,然后将具体执行的代码封装为对象,设置到调用者即可。即使用封装好的请求来配置调用者对象,无需入侵调用者的代码。
2)解耦请求者和实现者,请求者不需要知道关于具体的实现者的信息以及如何实现,只需要知道的是要执行某个命令,由具体的命令去关心实现者是谁,如何调用。
3)每个请求被封装成一个命令

线程隔离:

执行依赖代码的线程与请求线程(比如Tomcat线程)分离,请求线程可以自由控制离开的时间,这也是我们通常说的异步编程,Hystrix是结合RxJava来实现的异步编程。通过设置线程池大小来控制并发访问量,当线程饱和的时候可以拒绝服务,防止依赖问题扩散。

 

参考文章


https://segmentfault.com/a/1190000005988895

https://www.hoohack.me/2019/03/02/hystrix-command-pattern

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!