一、前提
hystrix版本为1.5.8
二、结论
我们都知道hystrix有熔断机制,但是我在网上找了半天,只知道熔断机制生效的时机是<当前的错误率>大于<设置的错误率阈值>,但是<当前的错误率>是如何计算出来的,却没有能说清楚的,大部分都一笔带过,要么就写个“错误率=错误数/总数”(貌似这么简单的算术题大家都会做,这其实不是我们想要的,因为根本就没说清楚这个等式里面的分子和分母是由什么组成的,即<错误数>是哪几个metric相加得到)。
经过翻阅源码之后,核心代码(见com.netflix.hystrix.HystrixCommandMetrics)如下:
聪明的你会发现:
总调用次数 = 成功次数+失败次数+超时次数+线程池拒绝次数+信号量拒绝次数(这个貌似很简单,不看源码也能得到这个结论)
总错误次数 = 失败次数+超时次数+线程池拒绝次数+信号量拒绝次数(这个才是我们真正想要的!!!)