2

关于 Ribbon 选择服务器的方式,我有一个简短的问题。

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

非常感谢您的回答

4

1 回答 1

5

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

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

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


循环规则

循环规则

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

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

看看从 RoundRobin 类中选择的方法:。


可用性过滤规则

可用性过滤规则

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

默认情况下,如果 RestClient 未能在最后 3 次与它建立连接,则实例会被电路跳闸。一旦一个实例电路跳闸,它将保持此状态 30 秒,然后再将电路视为闭合。但是,如果它继续连接失败,它将再次“电路跳闸”,并且它“电路关闭”的等待时间将与连续失败的次数成倍增加。

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


加权响应时间规则

加权响应时间规则

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

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

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

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

于 2017-05-26T06:13:55.463 回答