Spring Netflix LoadBalancing 规则比较

Posted

技术标签:

【中文标题】Spring Netflix LoadBalancing 规则比较【英文标题】:Spring Netflix LoadBalancing rules comparison 【发布时间】:2017-10-26 08:36:04 【问题描述】:

我有一个关于使用 Spring-Cloud Netflix 进行客户端负载平衡的问题。

启用负载平衡后,Ribbon 会选择一个服务器被调用。选择规则取决于选择的 IRule 实现。

以下实现有什么区别:

AvailabilityFilteringRule BestAvailableRule ClientConfigEnabledRoundRobinRule RoundRobinRule WeightedResponseTimeRule ZoneAvoidanceRule

非常感谢

【问题讨论】:

你看过这里github.com/Netflix/ribbon/wiki/…吗?有一些说明。 @spencergibb 一些描述,其他不完整,其他缺失。这个问题非常有效和相关。 【参考方案1】:

visit source 了解更多信息和不同的规则。

RoundRobinRule 此规则只是通过循环选择服务器。它通常用作默认规则或更高级规则的后备。

BestAvailableRule 跳过带有“跳闸”断路器的服务器并选择 并发请求最低的服务器。

可用性过滤规则 此规则将跳过被视为“电路跳闸”或具有高并发连接数的服务器。

加权响应时间规则 对于此规则,每个服务器根据其平均响应时间被赋予一个权重。响应时间越长,它得到的权重就越小。该规则随机选择一个服务器,其可能性取决于服务器的权重。

使用属性选择一个

  service-id:
    ribbon:
      NFLoadBalancerRuleClassName: com.netflix.loadbalancer.AvailabilityFilteringRule

【讨论】:

以上是关于Spring Netflix LoadBalancing 规则比较的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Netflix(网飞)

Netflix之后,如何用Spring Cloud 新组件构建微服务架构?

如何使用 spring-cloud-netflix 和 feign 编写集成测试

Spring Netflix LoadBalancing 规则比较

SpringCloud - Spring Cloud Netflix 之 Ribbon

Spring Cloud / Netflix OSS 中的负载均衡