最近在系统的学习SpringCloud,发现视频中有一小段代码,很不错,分享给大家。
Ribbion之手写轮询算法
public interface LoadBalancer{
ServiceInstance instances(List<ServiceInstance> serviceInstances);
}
@Component
public class MyLB implements LoadBalancer{
private AtomicInteger atomicInteger = new AtomicInteger(0);
public final int getAndIncrement(){
int current;
int next;
do{
current = this.atomicInteger.get();
next = current >= 2147483647 ? 0 :current + 1;
}while(!this.atomicInteger.compareAndSet(current,next));
return next;
}
@override
public ServiceInstance instances(List<ServiceInstance> serviceInstances){
int index = getAndIncrement()% serviceInstances.size();
return serviceInstances.get(index);
}
}
往期精彩内容:
扫描二维码关注公众号,回复:
12686914 查看本文章