权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现3
2024-08-29 08:36:38
权重轮询调度算法(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;
}
}
最新文章
- MATLAB学习(一)——状态好状态坏,自作自受
- android自定义view仿照MIUI中音量控制效果
- Groovy获取json和xml数据
- hive-初看hive
- AJax跨域请求百度音乐接口数据展示页面
- (转) 各种好用的插件 Xcode
- LAMP的编译日志,
- 最最常用的 100 个 Java 类(转)
- HDU 4914 Linear recursive sequence(矩阵乘法递推的优化)
- s2-048远程代码执行漏洞
- hadoop - spark on yarn 集群搭建
- java 中的JDK封装的数据结构和算法解析(集合类)----链表 List 之 Vector (向量)
- Redis源码剖析--源码结构解析
- mybatis中有趣的符号#与$
- 扫毒>;>;观后感
- python day03_ 文件处理
- Error response from daemon:###unable to delete ### (must be forced) - image is being used by stopped
- win 2008 R2 或以上版本,只有C盘情况下,PHP上传文件,显示不了解决办法
- Confluence 6 注册单一小工具
- 20165314 Linux安装及学习
热门文章
- 51nod 1040 最大公约数之和 | 数论
- POJ3252 Round Numbers 【数位dp】
- 洛谷 P2173 [ZJOI2012]网络 解题报告
- table隔行变色【转】
- 洛谷noip 模拟赛 day1 T3
- matlab7 + sqlitejdbc-v056.jar出现错误
- 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】
- 51nod 1413 权势二进制【进制思维】
- POJ 3620 Avoid The Lakes【DFS找联通块】
- UVA 1151	Buy or Build MST(最小生成树)