Ribbon的负载均衡策略(随机策略) 在选取可用服务时,源码是从所有服务总数中随机选取一个下标index,然后再根据下标index在可用服务集合中查看该服务是否可用, 它为什么不直接在可用服务集合中选取一个服务,这不是很省事吗?有伙伴能解释一下吗?官方为啥要那么写?
while(server == null) {
if (Thread.interrupted()) {
return null;
}
List<Server> upList = lb.getReachableServers();
List<Server> allList = lb.getAllServers();
int serverCount = allList.size();
if (serverCount == 0) {
return null;
}
int index = this.chooseRandomInt(serverCount);
server = (Server)upList.get(index);
if (server == null) {
Thread.yield();
} else {
if (server.isAlive()) {
return server;
}
server = null;
Thread.yield();
}
}