SpringCloudRibbon

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具。

负载均衡策略

  • 随机选择:RandomRule实现了从服务清单中随机选择一个服务实例的功能;

  • 线性轮询:RoundRobinRule实现了按照线性轮询的方式依次选择每个服务实例的功能;默认策略;

  • 重试机制:RetryRule实现了一个具备重试机制的实例选择功能,基于线性轮询方式进行反复尝试,如果成功获取则返回,失败则不断获取,直到达到一个时间阈值;

  • 根据权重:WeightedResponseTimeRule对RoundRobinRule进行拓展,增加了根据实例的运行情况来计算权重,并根据权重来挑选实例,以达到更优的分配效果;

  • ClientConfigEnabledRoundRobinRule:和RoundRobinRule一样,只是作为父类,后面的高级策略均是基于这个父类;

  • BsetAvailableRule:继承ClientConfigEnabledRoundRobinRule,选择并发请求数最小的一个,所以该策略选出的是最空闲的实例,这个算法依赖统计对象loadBalancerStats,当为空时执行父类算法;

  • PredicateBasedRule:抽象策略,继承ClientConfigEnabledRoundRobinRule,通过子类实现的Predicate过滤一部分实例,然后再以轮询方式选出一个;

  • AvailabilityFilteringRule:继承PredicateBasedRule,过滤掉故障机器和并发请求数大于阈值的机器;

  • ZoneAvoidanceRule:继承PredicateBasedRule,包含主过滤条件和次要过滤条件。

特性

  • 客户端负载均衡

  • 最佳区域选择,默认区域亲和策略

  • 重试机制,尝试不同的实例

Last updated