Ribbon有7个小算法,使用也简单,直接配置就可以使用
1、RoundRobinRule----默认算法,轮询
@Bean
public IRule RoundRobinRule(){
return new RoundRobinRule();
}
2、RandomRule----随机
@Bean
public IRule RandomRule(){
return new RandomRule();
}
3、AvailabilityFilteringRule----会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问
@Bean
public IRule AvailabilityFilteringRule(){
return new AvailabilityFilteringRule();
}
4、WeightedResponseTimeRule----根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高。刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够,会切换到WeightedResponseTimeRule
@Bean
public IRule WeightedResponseTimeRule(){
return new WeightedResponseTimeRule();
}
5、RetryRule----先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试,获取可用的服务
@Bean
public IRule RetryRule(){
return new RetryRule();
}
6、BestAvailableRule----会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
@Bean
public IRule BestAvailableRule(){
return new BestAvailableRule();
}
7、ZoneAvoidanceRule----默认规则,复合判断server所在区域的性能和server的可用性选择服务器
@Bean
public IRule ZoneAvoidanceRule(){
return new ZoneAvoidanceRule();
}