内容简介:前段时间我司内部晋升答辩时,有位同事的晋升PPT中说到它采用了“Hystrix信号量 + RPC CallBack + CompletableFuture”进行了性能优化,使用Hystrix主要是使用它的超时、降级、熔断等功能。不少评委提出了质疑,因为他们认为Hystrix信号量模式是不支持超时的。Talk is cheap,Show me your code信号量模式
背景
前段时间我司内部晋升答辩时,有位同事的晋升PPT中说到它采用了“Hystrix信号量 + RPC CallBack + CompletableFuture”进行了性能优化,使用Hystrix主要是使用它的超时、降级、熔断等功能。不少评委提出了质疑,因为他们认为Hystrix信号量模式是不支持超时的。
Talk is cheap,Show me your code
信号量模式
从实验中我们可以看出,Hystrix的信号量模式确实是支持超时的,但是结论就真的这么简单吗?
对于线程池实现超时比较容易理解,future.get(timeout)就可以了,但是对于信号量该如何实现以及理解呢。
我们接下来继续实验。
从输出的日志顺序可以看出来,明明是run执行完成之后,才在main方法中接收到的TimeoutException。 也就是说 Hystrix任务会在 main线程中会一直执行Hystrix任务,直到任务执行结束,如果发现执行时间超过了Hytrix设置的超时时间,main线程才会接收到异常。并不是在超时时间内结果Hystrix任务,释放资源。
那么如果实现了fallback又会是什么样子的呢?
从日志中可以看出,fallback其实任务在到达超时时间(也就是配置的150ms)时,由另外的线程去执行的fallback内容。但是main线程也只能在Hystrix run方法执行完成之后才能获取到fallback中的返回值。
上面的执行路径大概如下:
线程池模式
从日志可以看出,对于线程池模式,在到达timeout时候,会有HystrixTimer线程会把运行任务的Hystrix线程设置为中断,然后使用 HystrixTimer线程去之心fallback。
执行路径大概如下:
那么如果对于运行run方法的代码逻辑如果不支持中断又会怎么样呢?
虽然运行run方法的线程被设置了中断标志,但是因为run方法本身不支持中断逻辑,所以该线程会一直运行直到任务执行完毕。
为什么很多人认为信号量不支持超时
我想很多人认为信号量不支持超时,应该是来自于Hystrix的官网上诱导,官方上明确提到信号量模式是不支持。
看了一下官网上最后一次更新都是两年前了,应该是没有及时更新wiki才会导致很多人出现这个误解。
在早期的时候Hystrix信号量确实是不支持超时时间的,当时仅仅线程池支持,设置超时时间的参数为withExecutionIsolationThreadTimeoutInMilliseconds,但是在1.4.0之后的版本,信号量也就支持了超时时间,此时参数统一修改成了withExecutionIsolationThreadTimeoutInMilliseconds。
总结
从上述分析我们可以得出Hystrix的超时机制:
Hystrix在任务启动时会启动另外一个线程HystrixTime去监测任务。如果在TimeOut时间内,任务未完成,对于线程池模式,会把执行任务的线程设置为中断;对于信号量模式,Hystrix不会对执行任务的线程做任何操作。然后再使用HystrixTime线程去执行fallback逻辑。
所以大家一定要明白: 对于信号量超时模式,如果发生超时,Hystrix任务并不会结束,任务结束还是得依赖于run方法执行完毕。
对于线程池超时模式,如果发生超时,Hystrix任务可以结束,不依赖于run方法执行情况,但是run方法可能还会在执行,这依赖与run方法中的代码逻辑。
由此带来哪些问题呢?
-
在run方法中加入监控,看到的执行时间可能远大于timeout
-
配置的线程数能支持的最小QPS不是简单的”线程数 / timeout“。
-
对于信号量模式,整体串形链路的的最大时间,不是简单的Hystrix1的timeout + Hystrix2的timeout + ... + HystrixN的timeout。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- TCP 协议可靠性是如何保证:滑动窗口,超时重发,序列号确认应答信号
- 树莓派基础-模拟信号和数字信号的区别
- xenomai内核解析之信号signal(二)---xenomai信号处理机制
- 没信号也可救你命:苹果新专利让iPhone无信号也可充当紧急信标
- redigo设置超时时间
- 深入理解 JDBC 的超时
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
家事的撫慰(下冊)
Cheryl Mendelson / 甘錫安 / 大家出版社 / 2014-1-28 / NT$520
家事界暢銷參考書籍 各大媒體一致盛讚 亞馬遜讀者四星半高度評鑑 誠品、博客來、香港誠品 三選書 家務界經典暢銷書│各大媒體一致盛讚│讀者四星半高度評鑑 「這個世代最重要的家事著作!」──《大西洋月刊》 恢復家務打理者應有的地位,賦予應有的尊嚴和價值。 以生理的勞動、心力的投入,以及正確的持家知識,換得情感上的溫暖與安全。 .家裡空氣有異味,用香味來......一起来看看 《家事的撫慰(下冊)》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
正则表达式在线测试
正则表达式在线测试