Ribbon负载均衡
规则接口为IRule
默认实现为ZoneAvoidanceRule,根据zone选择服务列表,然后轮询
修改负载均衡算法步骤:
1.代码方式
代码方式在修改后需要重新打包
【1】在服务applicatin类中,定义一个新的IRule,以randomRule举例
@MapperScan(...)
@SpringBootApplication
public class Application2{
public static void main(){...}
...
@Bean
public IRule randomRule(){
return new RandomRule();
}
}
【2】重启服务执行,查看日志,观察服务被调用是否为随机分配
2.配置文件方式
配置文件方式在修改后无需重新打包,但无法做到全局配置
【1】在服务1的yml文件中,添加新的配置修改规则(被调用的服务名称为service2)
service2:
ribbon:
NFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRule # 负载均衡规则
......
......
【2】重启服务执行,查看日志,观察服务被调用是否为随机分配
饥饿加载
-
Ribbon默认采取懒加载,第一次访问时才会创建LoadBalanceClient,因此第一次请求时间会很长
-
饥饿加载:在项目启动时就创建LoadBalanceClient,因此第一次请求耗时短
开启饥饿加载:
配置服务的yml文件
ribbon:
eager-load:
enable:true #开启
clents: #指定服务名称
-service1
-service2
-service3
...
...