负载均衡分为集中式LB(Nginx实现)和进程内LB(Ribbon)。
Ribbon简单来说就是负载均衡+RestTemplate调用。
1.Ribbon在工作中分成两步
1.先选择EurekaServer,它优先选择在同一个区域内负载较少的EurekaServer。
2.在根据用户指定的策略,从服务注册的列表上选择一个地址。
注意:spring-cloud-starter-netflix-eureka-client这个jar内部引入了ribbon
2.轮询算法的继承结构
3.Ribbon默认轮询算法的原理
里面会有一个调用服务次数的计数器,采用 计数器%此服务实例的个数 = 最终调用的服务的下标索引。服务每次重启的话,计数器又从1重新开始。
4.手写轮询算法
CAS+自旋的思想,要实现在实例的列表中选择一个并返回。