SpringCloud负载均衡原理
org.springframework.cloud.loadbalancer.core.RoundRobinLoadBalancer
private Response<ServiceInstance> getInstanceResponse(List<ServiceInstance> instances) {
if (instances.isEmpty()) {
if (log.isWarnEnabled()) {
log.warn("No servers available for service: " + serviceId);
}
return new EmptyResponse();
}
//拿到所有的服务,做个原子自增
int pos = Math.abs(this.position.incrementAndGet());
//然后取模即可
ServiceInstance instance = instances.get(pos % instances.size());
return new DefaultResponse(instance);
}