Spring Cloud 源码学习之 Hystrix 熔断器
文中源码基于 Spring Cloud Finchley.SR1 、Spring Boot 2.0.6.RELEASE . 本文学习了Hystrix熔断器的原理、配置和源码,包含滑动窗口、状态变化等。 简介 circuit-breaker: circuit表示电路,大家译为熔断器非常精准。 回想起小时候,家里保险丝突然被烧断,需 手工更换一根新的保险丝 ;后来,保险丝被取代,电流过大时会跳闸, 闸拉上去后立马恢复供电 ;等到上大学时,只要打开功率高一点的电吹风,砰的一声就断电,但过10分钟就 自动来电 。在电流过大时,通过熔断机制以保护电路和家电。 Hystrix 属于上面的第三种, 一种自动恢复的智能熔断器 ,区别在于它保护的是系统,且判断 “电流过大” 的方式是: 不断收集请求指标信息(sucess、failure、timeout、rejection),当达到设定熔断条件时(默认是请求失败率达到50%)进行熔断。 在 Spring Cloud 源码学习之 Hystrix Metrics 收集 一文中,学习了 Metrics 收集,这是上文的图。 Hystrix Command 执行过程中,各种情况都以事件形式发出,再封装成特定的数据结构,最后汇入到事件流中(HystrixEventStream)。事件流提供了 observe() 方法,摇身一变,事件流把自己变成了一个数据源