负载均衡
Java-java教程
本篇文章主要介绍了详解Java实现负载均衡的几种算法代码 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧房屋报修系统源码,ubuntu下载云包,tomcat线程数突然多,爬虫推广告,php自动刷新函数,搜索引擎seo推广如何进行lzw
本篇文章主要介绍Java实现负载均衡的几种算法,具体如下:订餐网系统源码,Ubuntu改汉语失败,安装中间件tomcat,爬虫app采集,php配置文件内容,seo犯罪吗lzw
轮询:优惠券搜索网站源码,ubuntu串口连接失败,如何重新部署tomcat,app爬虫实现,天津谷川联行php面试,seo快排实力乐云seolzw
package class2.zookeeper.loadbalance;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.Set;/** * 負載均衡算法,輪詢法 * @author guoy * */public class TestRoundRobin { static Map serverWeigthMap = new HashMap(); static{ serverWeigthMap.put("192.168.1.12", 1); serverWeigthMap.put("192.168.1.13", 1); serverWeigthMap.put("192.168.1.14", 2); serverWeigthMap.put("192.168.1.15", 2); serverWeigthMap.put("192.168.1.16", 3); serverWeigthMap.put("192.168.1.17", 3); serverWeigthMap.put("192.168.1.18", 1); serverWeigthMap.put("192.168.1.19", 2); } Integer pos = 0; public String roundRobin() { //重新建立一個map,避免出現由於服務器上線和下線導致的並發問題 Map serverMap = new HashMap(); serverMap.putAll(serverWeigthMap); //獲取ip列表list Set keySet = serverMap.keySet(); ArrayList keyList = new ArrayList(); keyList.addAll(keySet); String server = null; synchronized (pos) { if(pos >=keySet.size()){ pos = 0; } server = keyList.get(pos); pos ++; } return server; } public static void main(String[] args) { TestRoundRobin robin = new TestRoundRobin(); for (int i = 0; i < 20; i++) { String serverIp = robin.roundRobin(); System.out.println(serverIp); } }}
加权轮询:
package class2.zookeeper.loadbalance;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Random;import java.util.Set;/** * 加權隨機载均衡算法 * @author guoy * */public class TestWeightRandom { static Map serverWeigthMap = new HashMap(); static{ serverWeigthMap.put("192.168.1.12", 1); serverWeigthMap.put("192.168.1.13", 1); serverWeigthMap.put("192.168.1.14", 2); serverWeigthMap.put("192.168.1.15", 2); serverWeigthMap.put("192.168.1.16", 3); serverWeigthMap.put("192.168.1.17", 3); serverWeigthMap.put("192.168.1.18", 1); serverWeigthMap.put("192.168.1.19", 2); } public static String weightRandom() { //重新建立一個map,避免出現由於服務器上線和下線導致的並發問題 Map serverMap = new HashMap(); serverMap.putAll(serverWeigthMap); //獲取ip列表list Set keySet = serverMap.keySet(); Iterator it = keySet.iterator(); List serverList = new ArrayList(); 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; } public static void main(String[] args) { String serverIp = weightRandom(); System.out.println(serverIp); }}
随机:
package class2.zookeeper.loadbalance;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.Random;import java.util.Set;/** * 隨機负载均衡算法 * @author guoy * */public class TestRandom { static Map serverWeigthMap = new HashMap(); static{ serverWeigthMap.put("192.168.1.12", 1); serverWeigthMap.put("192.168.1.13", 1); serverWeigthMap.put("192.168.1.14", 2); serverWeigthMap.put("192.168.1.15", 2); serverWeigthMap.put("192.168.1.16", 3); serverWeigthMap.put("192.168.1.17", 3); serverWeigthMap.put("192.168.1.18", 1); serverWeigthMap.put("192.168.1.19", 2); } public static String random() { //重新建立一個map,避免出現由於服務器上線和下線導致的並發問題 Map serverMap = new HashMap(); serverMap.putAll(serverWeigthMap); //獲取ip列表list Set keySet = serverMap.keySet(); ArrayList keyList = new ArrayList(); keyList.addAll(keySet); Random random = new Random(); int randomPos = random.nextInt(keyList.size()); String server = keyList.get(randomPos); return server; } public static void main(String[] args) { String serverIp = random(); System.out.println(serverIp); }}
加权随机:
package class2.zookeeper.loadbalance;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Random;import java.util.Set;/** * 加權隨機载均衡算法 * @author guoy * */public class TestWeightRandom { static Map serverWeigthMap = new HashMap(); static{ serverWeigthMap.put("192.168.1.12", 1); serverWeigthMap.put("192.168.1.13", 1); serverWeigthMap.put("192.168.1.14", 2); serverWeigthMap.put("192.168.1.15", 2); serverWeigthMap.put("192.168.1.16", 3); serverWeigthMap.put("192.168.1.17", 3); serverWeigthMap.put("192.168.1.18", 1); serverWeigthMap.put("192.168.1.19", 2); } public static String weightRandom() { //重新建立一個map,避免出現由於服務器上線和下線導致的並發問題 Map serverMap = new HashMap(); serverMap.putAll(serverWeigthMap); //獲取ip列表list Set keySet = serverMap.keySet(); Iterator it = keySet.iterator(); List serverList = new ArrayList(); 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; } public static void main(String[] args) { String serverIp = weightRandom(); System.out.println(serverIp); }}
ip hash:
package class2.zookeeper.loadbalance;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.Set;/** * 负载均衡 ip_hash算法 * @author guoy * */public class TestIpHash { static Map serverWeigthMap = new HashMap(); static{ serverWeigthMap.put("192.168.1.12", 1); serverWeigthMap.put("192.168.1.13", 1); serverWeigthMap.put("192.168.1.14", 2); serverWeigthMap.put("192.168.1.15", 2); serverWeigthMap.put("192.168.1.16", 3); serverWeigthMap.put("192.168.1.17", 3); serverWeigthMap.put("192.168.1.18", 1); serverWeigthMap.put("192.168.1.19", 2); } /** * 获取请求服务器地址 * @param remoteIp 负载均衡服务器ip * @return */ public static String ipHash(String remoteIp) { //重新建立一個map,避免出現由於服務器上線和下線導致的並發問題 Map serverMap = new HashMap(); serverMap.putAll(serverWeigthMap); //獲取ip列表list Set keySet = serverMap.keySet(); ArrayList keyList = new ArrayList(); keyList.addAll(keySet); int hashCode =remoteIp.hashCode(); int serverListSize = keyList.size(); int serverPos = hashCode % serverListSize; return keyList.get(serverPos); } public static void main(String[] args) { String serverIp = ipHash("192.168.1.12"); System.out.println(serverIp); }}
更多Java实现负载均衡的几种算法相关文章请关注PHP中文网!