Ribbon负载均衡
一、Ribbon负载均衡流程
二、负载均衡策略
Ribbon的负载均衡规则是一个叫做IRule的接口来定义的,每一个子接口都是一种规则:
默认的实现就是ZoneAvoidanceRule,是一种轮询方案
三、自定义负载均衡策略
1、通过定义IRule实现可以修改负载均衡规则,有两种方式:
1)代码方式:在order-service中的OrderApplication类中,定义一个新的IRule:
@Bean
public IRule randomRule(){
return new RandomRule();
}
2)配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则:
user-service:
ribbon:
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 -随机
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule # 负载均衡规则 -轮询
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 -随机
注意
:一般用默认的负载均衡规则,不做修改。默认的实现就是ZoneAvoidanceRule,是一种轮询方案
四、饥饿加载
Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时创建,降低第一次访问的耗时
1、配置开启饥饿加载:
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: user-service # 指定对user-service这个服务饥饿加载
五、测试
1、随机策略
1)发送4次请求测试随机策略