【问题标题】:Loadbalancing with Ribbon使用功能区进行负载平衡
【发布时间】:2017-10-25 22:01:07
【问题描述】:

我有一个关于 Ribbon 选择服务器方式的快速问题。

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

非常感谢您的回答

【问题讨论】:

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


    【解决方案1】:

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

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

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


    RoundRobinRule

    循环规则

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

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

    看看RoundRobin类中的方法choose:。


    可用性过滤规则

    可用性过滤规则

    此规则将跳过被视为“电路跳闸”或 高并发连接数。

    默认情况下,如果 RestClient 失败,实例会跳闸 在过去 3 次与它建立联系。一旦一个实例 电路跳闸,它将在此状态下保持 30 秒前 电路被认为再次闭合。但是,如果继续 连接失败,它将再次变为“电路跳闸”并等待 它变得“电路闭合”的时间将成倍增加 连续失败的次数。

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


    加权响应时间规则

    加权响应时间规则

    对于这个规则,每台服务器根据其平均值被赋予一个权重 响应时间。响应时间越长,重量越轻 得到。该规则随机选择一个可能存在的服务器 由服务器的重量决定。

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

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

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

    【讨论】:

    • 谢谢@Pau。那么这可能意味着没有负载均衡器检查运行状况或指标端点?
    • 不,我不这么认为,指标和健康端点是 spring-boot-actuator 端点,它们与 netflix oss 无关。
    猜你喜欢
    • 2017-04-20
    • 1970-01-01
    • 2010-12-18
    • 2018-03-12
    • 2019-10-20
    • 2012-06-04
    • 1970-01-01
    • 2021-08-15
    • 2021-08-13
    相关资源
    最近更新 更多