随机算法
先将服务器放进数组或者列表当中,通过JDK的随机算法,获取一个在数组有效范围内的下标,根据这个随机下标访问对应服务器。由概率统计理论可以得知,随着客户端调用服务器的次数增多,其实际效果越来越接近于平均分配请求到服务器列表中的每一台服务器。
代码:
public String random(){ String[] servers = {"server1", "server2", "server3"}; // 将系统的当前时间作为种子获取一个随机器 Random generator = new Random(System.currentTimeMillis()); // 将服务器列表大小作为上界传入随机生成器 int index = generator.nextInt(servers.length); return servers[index]; }
加权随机算法
如果服务器的处理性能有高低的话,这时候就需要加权随机算法。加权随机算法也很简单,主要有两种形式:
一种很简单的形式是按照服务器的权重,增大服务器列表中的个数。比如服务器A的权重是7,服务器B的权重是3,那么服务器列表中就添加7个A服务器,添加3个B服务器。这时候进行随机算法的话,就会有加权的效果了。
代码:
public String weightRandomA(){ // 服务器列表 String[] servers = {"serverA", "serverB"}; // 权重 int[] weights = {7, 3}; List<String> weightServers = new ArrayLis