ribbon-loadbalacer.-2.2.2.jar
抽象类:public abstract class AbstractServerPredicate
//随机策略
public Optional<Server> chooseRandomlyAfterFiltering(List<Server> servers) {
List<Server> eligible = this.getEligibleServers(servers);
return eligible.size() == 0?Optional.absent():Optional.of(eligible.get(this.random.nextInt(eligible.size())));
}
//重复轮询策略(nextIndex自增后,服务器的个数取模)
public Optional<Server> chooseRoundRobinAfterFiltering(List<Server> servers) {
List<Server> eligible = this.getEligibleServers(servers);
return eligible.size() == 0?Optional.absent():Optional.of(eligible.get(this.nextIndex.getAndIncrement() % eligible.size()));
}
//随机策略
public Optional<Server> chooseRandomlyAfterFiltering(List<Server> servers, Object loadBalancerKey) {
List<Server> eligible = this.getEligibleServers(servers, loadBalancerKey);
return eligible.size() == 0?Optional.absent():Optional.of(eligible.get(this.random.nextInt(eligible.size())));
}
//重复轮询策略(nextIndex自增后,服务器的个数取模)
public Optional<Server> chooseRoundRobinAfterFiltering(List<Server> servers, Object loadBalancerKey) {
List<Server> eligible = this.getEligibleServers(servers, loadBalancerKey);
return eligible.size() == 0?Optional.absent():Optional.of(eligible.get(this.nextIndex.getAndIncrement() % eligible.size()));
}