ribbon 负载均衡实现流程
- 发起请求,到达ribbonLoadBanlancerCliient(ribbon负载均衡客户端)
- 获取到url中的服务id,dynamicServerListLoadBalancer 从Eureka中拉取服务列表,根据Irule的规则选择某个服务
- 修改url后发起请求
irule 接口
- Ribbon的负载均衡规则是一个佳作IRule的接口来定义的,每一个子接口都是一种规则
- 通过定义Irule实现何以修改负载均衡规则,有两种方式
1、代码方式:
在类中定义一个新的Irule @bean注入
@Bean
public IRule randomRule(){
return new RandomRule();
}
2、配置文件方式
userservice:# 指定的服务名称
ribbon: #代表ribbon
NFLoadBalancerRuleClassName: con.netflix.loadbalancer.RandomRule #负载均衡规则
- 以代码方式进行配置时是全局的,用yml可以指定某个微服务,对不同的微服务添加负载均衡规则
饥饿加载
Ribbon 默认采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面的配置开启饥饿加载:
ribbon:
eager-load:
enabled: true #开启饥饿加载
clients: userservice #对指定的服务进行饥饿加载
#多服务时
- 服务1
- 服务2