目录
负载均衡流程
负载均衡策略
Ribbon加载策略
-
负载均衡流程
- Ribbon将http://userservice/user/1请求拦截下来,帮忙找到真实地址http://localhost:8081
- LoadBalancerInterceptor类对RestTemplate的请求进行拦截,然后从Eureka根据服务id获取服务列表,随后利用负载均衡算法得到真实的服务地址信息,替换服务id;即根据service名称,获取到了服务实例的ip和端口
-
负载均衡策略
- IRule决定负载均衡策略:轮询调度,随机规则,重试规则
- 负载均衡的规则都定义在IRule接口中,IRule的实现类:
- 默认的实现就是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询,是一种轮询方案
- 自定义负载均衡策略
- 1.在order-service启动类中,定义一个新的IRule(所有服务都生效)
- 配置灵活,但修改时需要重新打包发布
- 2.在order-service的配置文件中修改负载均衡规则(只有当前服务生效)
- 直观方便,无需重新打包发布,但是无法全局配置
-
Ribbon加载策略
- Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长
- 饥饿加载则会在项目启动时创建,降低第一次访问的耗时,配置开启饥饿加载