package com.model.lb;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.stereotype.Component;
import java.lang.annotation.Annotation;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @Description:测试类
* @Author: 张紫韩
* @Crete 2021/9/8 16:09
*/
@Component
public class LoadBalancerImpl 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 ));
System.out.println("******************第"+current+"次访问******************");
return next;
}
@Override
public ServiceInstance instances(List<ServiceInstance> serviceInstances) {
int index=getAndIncrement()%serviceInstances.size();
return serviceInstances.get(index);
}
}