17-springcloud-ribbon-3-Ribbon 负载均衡策略

发布时间 2023-04-12 14:03:25作者: companion

Ribbon 的负载均衡策略是由 IRule 接口定义, 该接口由如下实现:

jar包:com.netflix.ribbon#ribbon-loadbalancer中;

 

 

要使用ribbon实现负载均衡,Spring 的配置类里面把对应的负载均衡接口实现类作为一个Bean配置一下就行了;

负载均衡的入口:ILoadBalancer接口

如果要切换负载均衡策略:

@Bean
public IRule iRule(){
    return new RoundRobinRule();
}

负载均衡实现

策略

RandomRule

随机

RoundRobinRule

轮询

AvailabilityFilteringRule

先过滤掉由于多次访问故障的服务,以及并

发连接数超过阈值的服务,然后对剩下的服

务按照轮询策略进行访问;

WeightedResponseTimeRule

根据平均响应时间计算所有服务的权重,响

应时间越快服务权重就越大被选中的概率即

越高,如果服务刚启动时统计信息不足,则

使用RoundRobinRule策略,待统计信息足够会切换到该WeightedResponseTimeRule

略;

RetryRule

先按照RoundRobinRule策略分发,如果分发

到的服务不能访问,则在指定时间内进行重

试,然后分发其他可用的服务;

BestAvailableRule

先过滤掉由于多次访问故障的服务,然后选

择一个并发量最小的服务;

ZoneAvoidanceRule (默认)

综合判断服务节点所在区域的性能和服务节

点的可用性,来决定选择哪个服务;