如何在Zuul启用Hystrix断路器?

时间:2019-02-12 06:20:37

标签: java spring-boot netflix-zuul hystrix

在我的应用程序中,我们正在使用 springboot microservices,带有eureka注册表,zuul api网关, 这里假设我有2个支付服务实例, zuul正在使用功能区将/ payment端点负载平衡到付款服务, 当付款服务的一个节点无响应时,仍在eureka中注册。在这里,我们在Zuul apigateway上配置了hystrix断路器,但是对于没有响应的节点,hystrix断路器并未打开。

2 个答案:

答案 0 :(得分:1)

Zuul为每个路由创建 Hystrix断路器(服务ID)。这意味着一个 Hystrix断路器将在您所有的支付服务实例之间共享

Zuul为每个路由创建的断路器不是要从路由列表中删除不正常的实例。仅仅是为了防止Zuul的故障,这种故障可能是由一种服务故障引起的。

假定您使用的是Hystrix的默认配置。如果您有3个支付服务实例,而其中3个实例处于关闭状态,则将断开用于支付服务的断路器(因为默认的失败开门阈值为50%)。这意味着从Zuul到您的付款服务(包括您的一个正常实例)的所有流量都将被阻止。

您想要的-从路由列表中删除不正常的实例-是丝带的角色。 丝带定义了许多接口来定义其行为,例如IRule,IPing。其中一些具有您想要的能力。

答案 1 :(得分:0)

通过使用功能区将负载平衡策略更改为 <ServiceName>: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.AvailabilityFilteringRule可以实现的

https://github.com/Netflix/ribbon/wiki/Working-with-load-balancers