在 Spring 应用程序中使用 Zuul 预定义自己的负载平衡策略



我正在尝试使用Spring Cloud Stack,主要是Netflix的Eureka和Zuul。一段时间后,我设法创建了 Eureka Server 以及两个单独的客户端,其中包含一些 rest API,这些客户端在该服务器上注册自己,另一个用作服务器负载均衡器来代理对这两个实例的请求。

问题

我想定义我自己的负载平衡策略,因为我读到 Zuul 默认使用循环。Zuul 中是否有任何特定的命名约定,因为我在文档和指南中都没有运气寻找它。

Zuul 的循环负载平衡仅在发现客户端刷新范围内播发工作,默认情况下每隔几秒钟刷新一次。

当 Zuul 刷新其发现客户端时,服务器实例列表由com.netflix.discovery.shared.Applications中的代码随机打乱,无法配置。这种随机操作会破坏com.netflix.loadbalancer.RoundRobinRule中的有状态逻辑,该逻辑在服务器列表中保持"最后一个位置",以便它可以执行其循环逻辑。

在实现自己的选择服务器的规则时,请记住这一点。您可能需要按实例 id 或类似内容进行排序,以撤消发现客户端执行的随机排序。

要实现您自己的规则,您只需要提供一个实现com.netflix.loadbalancer.IRule的 bean。我们所做的是扩展抽象类com.netflix.loadbalancer.AbstractLoadBalancerRulechoose()方法是您工作的地方。

最新更新