如何在 Zuul 服务器中自定义 Ribbon 负载均衡器

how to customize the ribbon load balancer in Zuul server

据我所知,Zuul 代理服务器中使用的默认负载均衡器为 DynamicServerListLoadBalancer,它使用 ZoneAffinityServerListFilter 规则来选择服务器。但是,有什么方法可以自定义 zuul 代理服务器中使用的负载均衡器

我尝试添加以下配置以更改负载均衡器规则:

eureka.client.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule

但似乎仍然坚持默认配置。

非常感谢任何建议。

要使用配置更改负载平衡规则,您应该像下面这样定义功能区配置。

your_ribbonclient_name.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule

your_ribbonclient_name 应该替换为适合您的配置的。在 Zuul 中,ribbon 客户端名称与每个路由的服务 ID 相同。

您还可以使用 @RibbonClient 为负载平衡规则提供自己的 IRule bean,如下所示。

@RibbonClient(name = "your_ribbonclient_name", configuration = YourConfigurationClass.class)

您可以找到示例代码 here

如果您想将功能区配置应用于服务器中的整个功能区客户端, 您可以使用 @RibbonClients(而不是 @RibbonClient)来做到这一点。

@RibbonClients(defaultConfiguration = DefaultRibbonConfig.class)

您可以找到示例代码 here, and the related issues is here