【发布时间】:2017-10-25 22:01:07
【问题描述】:
我有一个关于 Ribbon 选择服务器方式的快速问题。
假设我有两个可以由 Ribbon 选择的服务。
Ribbon 如何知道选择哪个服务?它是否检查这两项服务以了解哪一项服务的过载较少?如果是,它是否调用/metrics 以及考虑哪个指标?
非常感谢您的回答
【问题讨论】:
标签: spring spring-boot load-balancing spring-cloud netflix-ribbon
我有一个关于 Ribbon 选择服务器方式的快速问题。
假设我有两个可以由 Ribbon 选择的服务。
Ribbon 如何知道选择哪个服务?它是否检查这两项服务以了解哪一项服务的过载较少?如果是,它是否调用/metrics 以及考虑哪个指标?
非常感谢您的回答
【问题讨论】:
标签: spring spring-boot load-balancing spring-cloud netflix-ribbon
查看 Github 功能区存储库上的 doc wiki:
Common rules 部分解释了 Ribbon 如何确定服务器可用性、权重等的一些规则。
共有三种可配置的负载均衡规则RoundRobinRule、AvailabilityFilteringRule和WeightedResponseTimeRule。
循环规则
此规则只是通过循环选择服务器。它经常被用作 默认规则或更高级规则的回退。
循环法是一种以合理的顺序公平地选择组中所有摘要的方法,通常从列表的第一个元素开始,直到到达最后一个元素,然后从第一个元素开始。
看看RoundRobin类中的方法choose:。
可用性过滤规则
此规则将跳过被视为“电路跳闸”或 高并发连接数。
默认情况下,如果 RestClient 失败,实例会跳闸 在过去 3 次与它建立联系。一旦一个实例 电路跳闸,它将在此状态下保持 30 秒前 电路被认为再次闭合。但是,如果继续 连接失败,它将再次变为“电路跳闸”并等待 它变得“电路闭合”的时间将成倍增加 连续失败的次数。
可以通过 Archaius 进行设置,Archaius 是一个用于配置管理的 Netflix 库。
加权响应时间规则
对于这个规则,每台服务器根据其平均值被赋予一个权重 响应时间。响应时间越长,重量越轻 得到。该规则随机选择一个可能存在的服务器 由服务器的重量决定。
要启用 WeightedResponseTimeRule,请通过负载均衡器设置它 API 或设置以下属性
<clientName>.<clientConfigNameSpace>.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.WeightedResponseTimeRule
此规则会随机选择服务器,但会考虑其权重。
【讨论】: