html5中文学习网

您的位置: 首页 > 网络编程 > java教程 » 正文

详解Java实现负载均衡的几种算法代码_java_

[ ] 已经帮助:人解决问题

本篇文章主要介绍Java实现负载均衡的几种算法,具体如下:2cyHTML5中文学习网 - HTML5先行者学习网

轮询:2cyHTML5中文学习网 - HTML5先行者学习网
2cyHTML5中文学习网 - HTML5先行者学习网

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<String,Integer> serverWeigthMap = new HashMap<String,Integer>();   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<String,Integer> serverMap = new HashMap<String,Integer>();      serverMap.putAll(serverWeigthMap);      //取ip列表list      Set<String> keySet = serverMap.keySet();      ArrayList<String> keyList = new ArrayList<String>();      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);      }    }}

加权轮询:2cyHTML5中文学习网 - HTML5先行者学习网
2cyHTML5中文学习网 - HTML5先行者学习网

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<String,Integer> serverWeigthMap = new HashMap<String,Integer>();   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<String,Integer> serverMap = new HashMap<String,Integer>();    serverMap.putAll(serverWeigthMap);    //取ip列表list    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;  }    public static void main(String[] args) {    String serverIp = weightRandom();    System.out.println(serverIp);  }}

随机:2cyHTML5中文学习网 - HTML5先行者学习网
2cyHTML5中文学习网 - HTML5先行者学习网

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<String,Integer> serverWeigthMap = new HashMap<String,Integer>();   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<String,Integer> serverMap = new HashMap<String,Integer>();    serverMap.putAll(serverWeigthMap);    //取ip列表list    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);    return server;  }    public static void main(String[] args) {    String serverIp = random();    System.out.println(serverIp);  }}

加权随机:2cyHTML5中文学习网 - HTML5先行者学习网
2cyHTML5中文学习网 - HTML5先行者学习网

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<String,Integer> serverWeigthMap = new HashMap<String,Integer>();   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<String,Integer> serverMap = new HashMap<String,Integer>();    serverMap.putAll(serverWeigthMap);    //取ip列表list    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;  }    public static void main(String[] args) {    String serverIp = weightRandom();    System.out.println(serverIp);  }}

ip hash:2cyHTML5中文学习网 - HTML5先行者学习网
2cyHTML5中文学习网 - HTML5先行者学习网

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<String,Integer> serverWeigthMap = new HashMap<String,Integer>();   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<String,Integer> serverMap = new HashMap<String,Integer>();    serverMap.putAll(serverWeigthMap);    //取ip列表list    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;        return keyList.get(serverPos);  }    public static void main(String[] args) {    String serverIp = ipHash("192.168.1.12");    System.out.println(serverIp);  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。2cyHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助