Ribbon中的负载均衡策略:
负载均衡的规则都定义在IRule接口中,而IRule有很多不同的实现类:
不同规则的含义如下:
默认的实现就是ZoneAvoidanceRule,往上查三代就知道它和轮询脱不了干系。
Ribbon中自定义负载均衡策略:
通过定义IRule实现可以修改负载均衡规则,有两种方式:
1、代码方式:
在消费者的配置类中,定义一个新的IRule:
@Bean
public IRule randomRule(){
//随机抽取,但是当请求量大了,还是偏向均匀分配
return new RandomRule();
}
2、配置文件方式:
在消费者的文件中,添加新配置文件中添加配置也可以修改规则:
XXXservice: # 给某个微服务配置负载均衡规则,这里是XXXservice服务
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则
注意,一般用默认的负载均衡规则,不做修改。