Java 如何启用zuul的Hystrix断路器?

Java 如何启用zuul的Hystrix断路器?,java,spring-boot,netflix-zuul,hystrix,Java,Spring Boot,Netflix Zuul,Hystrix,在我的应用程序中,我们使用 springboot微服务,带有eureka注册表、zuul api网关、, 这里假设我有两个支付服务实例, zuul正在使用ribbon对支付服务的/payment端点进行负载平衡, 当支付服务的一个节点无响应且仍在eureka注册时。在这里,我们在Zuul apigateway配置了hystrix断路器,但hystrix断路器没有为无响应节点打开 Zuul为每个路由服务ID创建一个Hystrix断路器。这意味着您的所有支付服务实例将共享一个Hystrix断路器 Z

在我的应用程序中,我们使用 springboot微服务,带有eureka注册表、zuul api网关、, 这里假设我有两个支付服务实例, zuul正在使用ribbon对支付服务的/payment端点进行负载平衡, 当支付服务的一个节点无响应且仍在eureka注册时。在这里,我们在Zuul apigateway配置了hystrix断路器,但hystrix断路器没有为无响应节点打开

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

Zuul为每个路由创建的断路器不是用于从路由列表中删除不健康的实例。这只是为了防止Zuul的宕机,这可能是由一种服务的宕机引起的

假设您使用的是Hystrix的默认配置。如果您有3个支付服务实例,并且3个实例中有2个实例出现故障,则支付服务断路器将断开,因为断路器故障的默认阈值为50%。这意味着您的支付服务的所有流量,包括来自Zuul的一个健康实例,都将被阻止


您需要的是功能区的角色—从路由列表中删除不健康的实例。Ribbon定义了许多接口来定义其行为,如IRule、IPing。其中一些具有您想要的功能。

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

那么,在每个服务中,您应该定义单独的命令吗?