首页 >

Java实现负载均衡的几种算法

Java|java教程Java实现负载均衡的几种算法
负载均衡
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中文网!


Java实现负载均衡的几种算法
  • Java高并发架构设计的介绍(图文)
  • Java高并发架构设计的介绍(图文) | Java高并发架构设计的介绍(图文) ...

    Java实现负载均衡的几种算法
  • 面向MYSQL数据构架梭子鱼负载均衡解决方案【MySQL】
  • 面向MYSQL数据构架梭子鱼负载均衡解决方案【MySQL】 | 面向MYSQL数据构架梭子鱼负载均衡解决方案【MySQL】 ...

    Java实现负载均衡的几种算法
  • 负载均衡 - Nginx+php可否实现php和静态资源的分离
  • 负载均衡 - Nginx+php可否实现php和静态资源的分离 | 负载均衡 - Nginx+php可否实现php和静态资源的分离 ...