现实世界的断路器大家肯定都很了解,每个人家里都会有断路器。断路器实时监控电路的情况,如果发 现电路电流异常,就会跳闸,从而防止电路被烧毁。

    保险丝熔点比较低,如果一旦家庭的电路短路的话,通过的电量就会变大,就会产生大量的热量,就会如果没保险丝的话就会烧毁你家里的电器,如果有保险丝的话,因为保险丝熔点比较低,就会给烧断了之后,此时就保护了家庭的电器,这样电器就不会着火.

    断路器打开

    软件世界的断路器可以这样理解:实时监测应用,如果发现在一定时间内失败次数/失败率达到一定阈值,就“跳闸”,断路器打开——此时,请求直接返回,而不去调用原本调用的逻辑。

    默认情况下断路器是关闭的,一旦你调用你的Controller的时候,比如说在10秒钟之内,调用错误的比例超过了断路器的阈值的话,或者是错误的次数超过阈值的话. 此时断路器就会打开,此时就不会进行远程调用,而是去调用你本地已经设置好的降级的方法


    断路器关闭

    从断路器打开的一瞬间开始,比如经过10秒钟之内结束的话,你一直是不会进行远程调用的,都是调用本地设置好的降级方法. 过了10秒之后,断路器会进入半开状态,此时会释放一次请求允许你进行远程调用,如果远程调用成功了,那么断路器就会回到关闭状态,如果这次释放的请求远程调用还是失败的话,那么断路器还是打开状态. 接着等10秒钟之后再次释放一次请求允许进行远程调用….. 以此循环..

    这也是Hystrix框架的原理.


    Hystrix原理 - 图1