前面已经讲了Ribbon负载均衡的几种类型和自定义负载均衡方式
https://blog.csdn.net/qq_40386113/article/details/120718170?spm=1001.2014.3001.5501https://blog.csdn.net/qq_40386113/article/details/120718170?spm=1001.2014.3001.5501 如同自定义Ribbon负载均衡一样,在配置文件中对负载均衡策略进行配置后,对应的策略就会生效。
#配置负载均衡策略
smile-eureka-serve:
ribbon.NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
其中:smile-eureka-serve是要调用的服务的名称,com.netflix.loadbalancer.RandomRule是负载均衡策略类的路径,如果是自定义策略类,则使用自定义类的路径。下面罗列Ribbon自带几种策略的类路径
BestAvailableRule:选择一个最小的并发请求的Server,逐个考察Server,如果Server被标记为错误,则跳过,然后再选择ActiveRequestCount中最小的Server;
对应路径:com.netflix.loadbalance.BestAvailableRule
AvailabilityFilteringRule:过滤掉那些一直连接失败的且被标记为circuit tripped的后端Server,并过滤掉那些高并发的后端Server或者使用一个AvailabilityPredicate来包含过滤Server的逻辑。其实就是检查Status里记录的各个Server的运行状态;
对应路径:com.netflix.loadbalance.AvailabilityFilteringRule
ZoneAvoidanceRule:使用ZoneAvoidancePredicate和AvailabilityPredicate来判断是否选择某个Server,前一个判断判定一个Zone的运行性能是否可用,剔除不可用的Zone,AvailabilityPredicate用于过滤掉连接数过多的Server;
对应路径:com.netflix.loadbalance.ZoneAvoidanceRule
RandomRule:随机选择一个Server;
对应路径:com.netflix.loadbalance.RandomRule
RoundRobinRule:轮询查询,轮询index,选择index对应位置的Server;
对应路径:com.netflix.loadbalance.RoundRobinRule
RetryRule:对选定的负载均衡策略机上重试机制,也就是说当选定了某个策略进行请求负载时,在一个配置的时间段内若选择的Server不成功,则一直尝试使用subRule的方式选择一个可用的Server;
对应路径:com.netflix.loadbalance.RetryRule
ResponseTimeWeightedRule:(WeightedResponseTimeRule)根据响应时间分配一个Weight(权重),响应时间越长,Weight越小,被选中的可能性越低。ResponseTimeWeightedRule后来被命名为WeightedResponseTimeRule
对应路径:com.netflix.loadbalance.ResponseTimeWeightedRule