随机(Random)算法

通过系统随机函数,根据后端服务器列表的大小值来随机选取其中一台进行访问。由概率统计理论可以得知,随着调用量的增大,其实际效果越来越接近于平均分配流量到每一台后端服务器,也就是轮询的效果

public class RandomTest {
    static List<String> list = Arrays.asList("192.168.0.101","192.168.0.102", "192.168.0.103", "192.168.0.104");
    public static void main(String[] args) throws InterruptedException {
        while (true){
            System.err.println(get());
            TimeUnit.SECONDS.sleep(1);
        }
    }
    private static synchronized String get(){
        // 拷贝服务列表避免出现由于服务器上线和下线导致的并发问题
        List<String> result = new ArrayList<>();
        result.addAll(list);

        Random random = new Random();
        int randomPos = random.nextInt(result.size());
        return result.get(randomPos);
    }
}

基于概率统计的理论,吞吐量越大,随机算法的效果越接近于轮询算法的效果。因此基本可以替代轮询算法

results matching ""

    No results matching ""