【问题标题】:Predefining own load balancing strategy with Zuul in Spring application在 Spring 应用中使用 Zuul 预定义自己的负载均衡策略
【发布时间】:2018-05-02 19:10:57
【问题描述】:

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

问题

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

【问题讨论】:

  • zuul 使用功能区。检查功能区部分cloud.spring.io/spring-cloud-static/Edgware.SR3/single/…。具体来说,您需要实现IRule
  • 这是否意味着我必须将它放在我的类路径中并使用 @Configuration bean 进行预配置?它是否也迫使我以某种方式依赖功能区负载平衡而不是 Zuul 提供的负载平衡?
  • 是的,Zuul 没有自己的负载平衡策略。它使用丝带。

标签: load-balancing spring-cloud netflix-zuul netflix-eureka spring-cloud-netflix


【解决方案1】:

Zuul 的循环负载平衡仅在默认情况下每隔几秒发生一次的发现客户端刷新范围内按广告宣传的那样工作。

当 Zuul 刷新它的发现客户端时,服务器实例列表被com.netflix.discovery.shared.Applications 中的代码随机打乱,并且无法配置出来。这种洗牌打破了com.netflix.loadbalancer.RoundRobinRule 中的状态逻辑,该逻辑在服务器列表中保持“最后位置”,因此它可以执行循环逻辑。

当您实施自己的选择服务器的规则时,请记住这一点。您可能需要按实例 id 或类似的东西进行排序,以撤消发现客户端所做的随机播放。

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

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2018-11-16
    • 2017-06-08
    • 2016-03-08
    相关资源
    最近更新 更多