负载均衡策略(随机策略)

Ribbon的负载均衡策略(随机策略) 在选取可用服务时,源码是从所有服务总数中随机选取一个下标index,然后再根据下标index在可用服务集合中查看该服务是否可用, 它为什么不直接在可用服务集合中选取一个服务,这不是很省事吗?有伙伴能解释一下吗?官方为啥要那么写?

      while(server == null) {
                if (Thread.interrupted()) {
                    return null;
               }

                List upList = lb.getReachableServers();
                List 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();
                }
            }


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^