SpringCloud负载均衡原理

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);
	}

你可能感兴趣的:(SpringCloud负载均衡原理)