负载均衡算法小结
来源:互联网 发布:域名dns查询 java 编辑:程序博客网 时间:2024/06/06 08:37
1、轮询法
将请求按顺序轮流地分配到服务器上,他均衡的对待后端每一台服务器,而不关心服务器实际的连接数和当前的系统负载
public class TeskToundRobin { private static Map<String, Integer> serverWeightMap = null; private static Integer pos = 0; public void initServerWeightMap(){ serverWeightMap = new HashMap<String,Integer>(); serverWeightMap.put("192.168.1.100", 1); serverWeightMap.put("192.168.1.101", 1); serverWeightMap.put("192.168.1.102", 4); serverWeightMap.put("192.168.1.103", 1); serverWeightMap.put("192.168.1.104", 1); serverWeightMap.put("192.168.1.105", 3); serverWeightMap.put("192.168.1.106", 1); serverWeightMap.put("192.168.1.107", 2); serverWeightMap.put("192.168.1.108", 1); serverWeightMap.put("192.168.1.109", 1); serverWeightMap.put("192.168.1.110", 1); } public static String testRoundRobin(){ Map<String,Integer> serverMap = new HashMap<String,Integer>(); serverMap.putAll(serverWeightMap); Set<String> keySet = serverMap.keySet(); ArrayList<String> keyList = new ArrayList<String>(); keyList.addAll(keySet); String server = null; synchronized(pos){ System.out.println("pos = "+pos); if(pos >= keySet.size()){ pos = 0; } server = keyList.get(pos); System.out.println("server = "+server); pos++; } return server; } public static void main(String[] args) { for(int i= 0;i<15; i++){ TeskToundRobin test = new TeskToundRobin(); test.initServerWeightMap(); test.testRoundRobin(); } }}
2、随机算法
public static String randomAlgorithm(){ Map<String,Integer> serverMap = new HashMap<String,Integer>(); serverMap.putAll(serverWeightMap); Set<String> keySet = serverMap.keySet(); ArrayList<String> keyList = new ArrayList<String>(); keyList.addAll(keySet); Random random = new Random(); int randomPos = random.nextInt(keyList.size()); String server = keyList.get(randomPos); System.out.println(server); return server; }
3、哈希算法
public static String testConsumerHash(String remoteip){ Map<String,Integer> serverMap = new HashMap<String,Integer>(); serverMap.putAll(serverWeightMap); Set<String> keySet = serverMap.keySet(); ArrayList<String> keyList = new ArrayList<String>(); keyList.addAll(keySet); int hashCode = remoteip.hashCode(); int serverListSize = keyList.size(); int serverPos = hashCode % serverListSize; String server = keyList.get(serverPos); System.out.println(serverPos+"==="+server); return server; }
4、加权轮询法
public static String testWeightRoundRobin(){ Map<String,Integer> serverMap = new HashMap<String,Integer>(); serverMap.putAll(serverWeightMap); Set<String> keySet = serverMap.keySet(); Iterator<String> it = keySet.iterator(); List<String> serverList = new ArrayList<String>(); while(it.hasNext()){ String server = it.next(); Integer weight = serverMap.get(server); for(int i=0; i<weight; i++){ serverList.add(server); } } String server = null; synchronized(pos){ if(pos >= serverList.size()){ pos = 0; } server = serverList.get(pos); pos ++; } return server; }
5、加权随机法
public static String testWeightRandom(){ Map<String,Integer> serverMap = new HashMap<String,Integer>(); serverMap.putAll(serverWeightMap); Set<String> keySet = serverMap.keySet(); Iterator<String> it = keySet.iterator(); List<String> serverList = new ArrayList<String>(); while(it.hasNext()){ String server = it.next(); Integer weight = serverMap.get(server); for(int i=0; i<weight; i++){ serverList.add(server); } } Random random = new Random(); int randomPos = random.nextInt(serverList.size()); String server = serverList.get(randomPos); return server; }
6、最小连接数法
根据后端服务器当前连接数情况,取连接数最小的服务器地址,尽可能得提高后端服务器的利用效率,奖负载合理地分流到每一台机器。由于最小连接数涉及服务器连接数的汇总和感知。所以设计和实现比较繁琐。
阅读全文
0 0
- 负载均衡算法小结
- 负载均衡算法小结
- 负载均衡算法小结
- 负载均衡算法小结
- 负载均衡算法小结
- 负载均衡算法小结
- 负载均衡算法小结
- 负载均衡小结
- 负载均衡--服务器集群负载均衡算法
- 负载均衡算法
- 负载均衡算法大全
- 负载均衡算法随笔
- 负载均衡算法随笔
- 负载均衡算法
- 负载均衡算法
- 负载均衡算法
- LVS 负载均衡算法
- 负载均衡算法
- 删除Eclipse已有的SVN资源库位置
- spring boot注解及启动过程
- easyui的datagrid在使用分页条的时候,乱码
- [PHP学习]Js判断跳转PC还是Wap端网站方法
- c3p0 不断的输出debug信息 Log4j 指定项目的 输出级别
- 负载均衡算法小结
- 是使用Net Configuration Assistant,配置监听,或者删除监听的时候,一定要点击”完成“。否则,无效
- C# Async/await
- 码农小汪-SpringMVC-入门篇
- 【2015年第六届蓝桥杯C/C++程序设计本科B组决赛 积分之迷(结果填空) 】
- 使用gradle构建java项目
- SQLite 3的中文读写
- Activity工作流(2)-入门安装运行第一个例子
- linux GPU