package com.baojiaren.balancer;
import org.springframework.cloud.client.ServiceInstance;
import java.util.List;
public interface LoadBalancer {
public ServiceInstance getSingleAddress(List<ServiceInstance> serviceInstances);
public ServiceInstance getRandomAddress(List<ServiceInstance> serviceInstances);
}
package com.baojiaren.balancer.impl;
import com.baojiaren.balancer.LoadBalancer;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.stereotype.Service;
import java.lang.annotation.Annotation;
import java.util.List;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
@Service
public class RotationLoadBalancer implements LoadBalancer {
private AtomicInteger atomicInteger= new AtomicInteger(0);
@Override
public ServiceInstance getSingleAddress(List<ServiceInstance> serviceInstances) {
int count = atomicInteger.incrementAndGet();
int index=count%serviceInstances.size();
return serviceInstances.get(index);
}
@Override
public ServiceInstance getRandomAddress(List<ServiceInstance> serviceInstances) {
Random random=new Random();
return serviceInstances.get(random.nextInt(serviceInstances.size()));
}
}