使用功能区进行负载均衡

时间:2017-05-25 09:46:57

标签: spring spring-boot load-balancing spring-cloud netflix-ribbon

我对Ribbon选择服务器的方式有一个简单的问题。

假设我有两个可以由Ribbon选择的服务。 Ribbon如何知道要选择哪个服务?它是否检查两个服务以便知道哪个服务重载较少?如果是,是否会调用/metrics并考虑哪个指标?

非常感谢您的回答

1 个答案:

答案 0 :(得分:3)

查看Github功能区存储库中的doc wiki

Common rules部分解释了一些规则,即Ribbon如何确定服务器可用性,权重等。

有三种可配置的负载平衡规则RoundRobinRuleAvailabilityFilteringRuleWeightedResponseTimeRule

RoundRobinRule

  

RoundRobinRule

     

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

循环法是一种方法,以公平和合理的顺序选择组中的所有摘要,通常从列表的第一个元素开始,直到它到达最后一个元素并从第一个元素开始。

看看RoundRobin类中的方法choose:。

AvailabilityFilteringRule

  

AvailabilityFilteringRule

     

此规则将跳过被视为"电路跳闸的服务器"或者   高并发连接数。

     

默认情况下,如果RestClient失败,则实例会跳闸   最后三次连接它。一旦有实例   电路跳闸后,它将保持这种状态30秒   该电路再次被视为关闭。但是,如果继续下去   失败的连接,它将成为"电路跳闸"再次和等待   时间成为"电路关闭"将成倍增加   连续失败的数量。

可以通过Archaius设置,这是一个用于配置管理的Netflix库。

WeightedResponseTimeRule

  

WeightedResponseTimeRule

     

对于此规则,每个服务器根据其平均值给出权重   响应时间。响应时间越长,重量就越小   得到。规则随机选择可能的服务器   由服务器的权重决定。

     

要启用WeightedResponseTimeRule,请使用负载均衡器进行设置   API或设置以下属性

<clientName>.<clientConfigNameSpace>.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.WeightedResponseTimeRule

此规则随机选择服务器,但考虑其权重。