im
im copied to clipboard
关于随机的方式选择服务器节点的疑问
hi,master分支下面的随机选择节点有点疑问请教一下:
protected ServerNode doSelect(List<ServerNode> serverNodes) {
int size = serverNodes.size();
int[] weights = new int[size];
int total = 0 ;
for(int i=0;i<size;i++){
Integer weight = serverNodes.get(i).getWeight();
total+=weight;
weights[i] = total;
}
//类似于抽奖算法
int randomIndex = ThreadLocalRandom.current().nextInt(weights[size - 1]);
for(int index = 0;index<size;index++){
if(randomIndex < weights[index]){
return serverNodes.get(index);
}
}
return serverNodes.get(ThreadLocalRandom.current().nextInt(serverNodes.size()));
}
0客户端的时候启动2个服务节点,此时2个服务节点的权重weight是不是都是0? 如果是的话
int randomIndex = ThreadLocalRandom.current().nextInt(weights[size - 1]);
这个里面的nextInt一直时0,会报错吧?