直接上代码
class Server{
private String ip;
private String port;
public int weight;
}
class LoadBalancer{
private static List<Server> list=new List<Server>();
private static int totalWeight=0;
static{//加载配置文件,将解析的服务器列表添加到list中.同时计算出总权重值
//list.add(server);
//totalWeight+=server.weight;
}
private static LoadBalancer loadBalancer=new LoadBalancer();
private LoadBalancer(){}
public static LoadBalancer getLoadBalancer(){
return loadBalancer;
}
public Server getServer(){
int sum=0;
int rand=(int)(1+Math.random()*totalWeight);
for(Server serv : list){由概率区间值决定服务器的分配
sum+=serv.weight;
if(rand<=sum){
return serv;
}else{
continue;
}
}
return null;//不会出现这种情况。
}
}