权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现3

之前两篇相关博文:
权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现
http://www.cnblogs.com/huligong1234/p/3819979.html 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现2
http://www.cnblogs.com/huligong1234/p/3862665.html

之前两篇讲到的方案都稍复杂些,在实际项目中,对权重轮询精确要求不高的情况下,还可以有更简便的方式,就是利用Java自带的Random来实现。

(当然也可以利用Collections.shuffle()来达到目的)

示例代码如下:


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Random; /**
* 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现
* @author huligong
* */
public class WeightedRoundRobinScheduling { public static void main(String[] args) {
Map<String,Integer> serverWeight = new HashMap<String,Integer>();
serverWeight.put("192.168.1.100", 6);//ip,权重
serverWeight.put("192.168.1.101", 3);
serverWeight.put("192.168.1.102", 2);
serverWeight.put("192.168.1.104", 1); String ip = getServer(serverWeight);
} public static String getServer(Map<String,Integer> serverWeight){
Random random = new Random(); ArrayList<String> serverList = new ArrayList<String>();
for(Map.Entry<String, Integer> m : serverWeight.entrySet()){
for(int i=0,len=m.getValue();i<len;i++){
serverList.add(m.getKey());
}
} String[] servers = serverList.toArray(new String[serverList.size()]);
int weight_idx = random.nextInt(servers.length);
String ip = servers[weight_idx];
return ip;
} }

最新文章

  1. MATLAB学习(一)——状态好状态坏,自作自受
  2. android自定义view仿照MIUI中音量控制效果
  3. Groovy获取json和xml数据
  4. hive-初看hive
  5. AJax跨域请求百度音乐接口数据展示页面
  6. (转) 各种好用的插件 Xcode
  7. LAMP的编译日志,
  8. 最最常用的 100 个 Java 类(转)
  9. HDU 4914 Linear recursive sequence(矩阵乘法递推的优化)
  10. s2-048远程代码执行漏洞
  11. hadoop - spark on yarn 集群搭建
  12. java 中的JDK封装的数据结构和算法解析(集合类)----链表 List 之 Vector (向量)
  13. Redis源码剖析--源码结构解析
  14. mybatis中有趣的符号#与$
  15. 扫毒&gt;&gt;观后感
  16. python day03_ 文件处理
  17. Error response from daemon:###unable to delete ### (must be forced) - image is being used by stopped
  18. win 2008 R2 或以上版本,只有C盘情况下,PHP上传文件,显示不了解决办法
  19. Confluence 6 注册单一小工具
  20. 20165314 Linux安装及学习

热门文章

  1. 51nod 1040 最大公约数之和 | 数论
  2. POJ3252 Round Numbers 【数位dp】
  3. 洛谷 P2173 [ZJOI2012]网络 解题报告
  4. table隔行变色【转】
  5. 洛谷noip 模拟赛 day1 T3
  6. matlab7 + sqlitejdbc-v056.jar出现错误
  7. 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】
  8. 51nod 1413 权势二进制【进制思维】
  9. POJ 3620 Avoid The Lakes【DFS找联通块】
  10. UVA 1151 Buy or Build MST(最小生成树)