首页 > 其他分享 >Ribbon负载均衡策略

Ribbon负载均衡策略

时间:2022-12-14 15:02:56浏览次数:30  
标签:负载 服务 策略 IRule 均衡 Ribbon

通过上一节解析Ribbon原理我们知道,在BaseLoadBalancer中通过IRule接口定义了很多的负载均衡策略,所以我们可以通过查看IRule的接口类实现关系来看一下Ribbon有哪些负载均衡策略,如图所示。

 

 

IRule接口的直接子类是AbstractLoadBalancerRule,但是它是一个抽象类,它只定义了一个ILoadBalancer负载均衡对象,通过它可以从负载均衡器中获取信息并维护,将其作为分配的依据,并以此设计一些算法来实现针对特定场景的高效策略。

 

图中各个具体的实现类表示不同的负载均衡策略,我们来介绍几个常用的策略。

 

RoundRobinRule:Ribbon默认的负载均衡策略,该策略实现了按照线性轮询的方式选择每个服务实例的功能。

 

RandomRule:该策略是通过线程安全获取一个不超过服务列表数量的整型随机数,然后从服务列表中随机获取一个服务实例。

RetryRule:该策略实现了一个具备重试机制的实例选择功能。该策略下,如果轮询获取某一个服务在一个配置时间段内不成功,则一直尝试使用subRule对象的choose方法选择服务功能来选择一个可用的服务。

WeightedResponseTimeRule:RoundRobinRule策略的拓展,它实现了根据权重(Weight)选择服务的功能,根据平均响应时间分配一个权重,响应时间越长,权重越小,被选中的概率越低,响应时间越短,权重越大,被选中的概率越高。

BestAvailableRule:该策略下会根据服务状态来判断处于断路跳闸状态的服务,然后选择一个连接数小的服务。

标签:负载,服务,策略,IRule,均衡,Ribbon
From: https://www.cnblogs.com/cnetsa/p/16982176.html

相关文章