概述
IRule是负载均衡的核心算法类,若未定义是用什么算法,默认使用轮询RoundRobinRule
里面包括7种算法提供使用(若不想使用这7种算法,可以自定义算法)
算法
1.RoundRobinRule 轮询
2.RandomRule 随机
3.AvailabilityFilteringRule
先过滤掉由于故障处于断路器跳闸状态的服务,还有并发连接超过阈值的服务,然后对剩余的服务列表进行轮询
4.WeightedResponseTimeRule
根据平均响应时间计算所有服务器的权重响应时间越快,权重越大,刚启动统计信息不足会采用轮询,当统计信息足够,会切换到WeightedResponseTimeRule
5.RetryRule
按照轮询算法获取服务器列表,若获取服务失败,在指定的时间重试,获取可用的服务
6.BestAvailableRule
先过滤由于多次访问故障而处于断路器跳闸状态的服务器,然后选择并发量最小的服务
7.ZoneAvoidanceRule
默认规则,复合判断server所在区域的性能和server可用性选择服务器
使用
将负载均衡算法注入spring容器中即可
在@Configuration的泪中加入返回值为IRule类型
@Bean
public IRule myRule(){
return new RandomRule();
}
要注意应用场景
参考资料:尚硅谷周阳Spring Cloud讲解