我刚刚阅读Hystrix指南,并试图围绕默认断路器和恢复期如何操作,然后如何定制其行为。显然,如果电路跳闸,Hystrix将自动调用命令的getFallBack()
方法;这我了解。但是首先要考虑的是什么标准?理想情况下,我想尝试多次提供支持服务(例如,最多3次尝试),然后再考虑服务处于离线/不健康状态并断开断路器。 我怎么能实现这一点,并在哪里?Hystrix:定制电路断路器和恢复逻辑
但我想如果我重写默认断路器,我还必须重写任何机制处理默认恢复期。如果某后备服务下山的时候,可能有以下几个原因之一:
- 有
- 这项服务是部署错误客户端和服务器之间的网络中断,使得它不能返回有效的回应客户
- 客户端部署与这使得它无法发送有效的请求到服务器
- 有些怪异,瞬时服务打嗝的(也许是服务做了重大的垃圾回收等) 错误
- 等
在大多数情况下,恢复期仅等待N秒,然后再次尝试是不够的。如果该服务存在缺陷,或者有人在数据中心中拉出了一些网络电缆,我们将总是从该服务中失败。只有在少数情况下,客户服务机构才会自动自我修复,而无需人为干预。
所以我想我的下一个问题是局部的,但我想这主要是“如何自定义默认的恢复周期策略?”:“如何使用猬当服务已关闭通知DEVOPS和需要人工干预“
优秀答案@ ahus1(+1) - 这里只是好奇:如果目标服务再次变得健康,是否有办法控制断路器的重新闭合?换句话说,一个服务停机几分钟:希望断路器跳闸并打开。现在,所有对该服务的调用都将导致'getFalllback'执行。但现在服务又恢复了健康。 Hystrix如何知道关闭断路器并允许“运行”再次执行? – IAmYourFaja 2014-11-24 19:58:20
@IAmYourFaja:断路器会在出现很多错误时触发(默认情况下:一段时间内的错误超过50%)。之后,所有请求都将由后备处理(如果有的话)。几秒钟后(默认:5秒),首先将一个请求转发到原始服务。如果这是成功的,则所有电路都会再次关闭,请求将再次转发到原始服务。有关配置值,请参阅https://github.com/Netflix/Hystrix/wiki/Configuration。有关功能,请参阅https://github.com/Netflix/Hystrix/wiki/How-it-Works#CircuitBreaker。 – ahus1 2014-11-24 20:26:35
根据默认值,恢复检查不会每5秒发生一次。每次调用原始服务时,在FAILURE上调用回退。任何机构都面临这个问题? – lives 2017-01-14 07:03:31