大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 什么是Java負載均衡算法

什么是Java負載均衡算法

更新時間:2022-08-23 09:53:36 來源:動力節點 瀏覽1001次

這是一個在java中實現負載均衡模塊的簡單演示。基本算法是RoundRobin,WeightRoundRobin,IpHash,Random,WeightRandom。

IpPool 和 LoadBalance 接口:

包com.spacex.concurrent.loadbalance; 
導入java.util.Map;
導入java.util.concurrent.ConcurrentHashMap;
公共類IpPool { 
    public static Map<String, Integer> ipMap = new ConcurrentHashMap<>(); 
    靜態{ 
        ipMap .put( "192.168.1.1" , 10); 
        ipMap .put( "192.168.1.2" , 10); 
        ipMap .put( "192.168.1.3" , 10); 
        ipMap .put( "192.168.1.4" , 10); 
        ipMap .put( "192.168.1.5" , 10);
        “192.168.1.6”,10);
        ipMap .put( "192.168.1.7" , 10); 
        ipMap .put( "192.168.1.8" , 10); 
        ipMap .put( "192.168.1.9" , 10); 
        ipMap .put( "192.168.1.10" , 10); 
    } 
}
包com.spacex.concurrent.loadbalance; 
公共接口LoadBalance { 
    String getServer(String clientIp); 
}

循環:

公共課循環法工具負載均衡 {
    私有靜態整數位置= 0; 
    @覆蓋
    上市String getServer(String clientIp) { 
        Set<String> 服務器 = IpPool。ipMap.keySet(); 
        列表<字符串> 服務器列表 =新的數組列表<>(); 
        serverList.addAll(服務器); 
        字符串目標 =無效的;
        同步的(位置) {
            如果(位置> serverList.size() - 1) {
                位置= 0; 
            }
            目標 = serverList.get(位置);
            位置++; 
        }
        返回目標; 
    } 
}

隨機的:

包com.spacex.concurrent.loadbalance; 
導入java.util.ArrayList;
導入java.util.List;
導入java.util.Random;
導入java.util.Set;
公共類RandomLoadBalance實現LoadBalance { 
    @Override 
    public String getServer(String clientIp) { 
        Set<String> servers = IpPool. ipMap .keySet(); 
        列表<String> serverList = new ArrayList<>(); 
        serverList.addAll(服務器); 
        int randomIndex = new Random().nextInt(serverList.size());
        字符串目標 = serverList.get(randomIndex); 
        返回目標;
    } 
}

權重隨機:

包com.spacex.concurrent.loadbalance; 
導入java.util.ArrayList;
導入java.util.Iterator;
導入java.util.List;
導入java.util.Random;
導入java.util.Set;
public class WeightRandom實現LoadBalance { 
    @Override 
    public String getServer(String clientIp) { 
        Set<String> servers = IpPool. ipMap .keySet(); 
        列表<String> serverList = new ArrayList<>(); 
        迭代器<String> 迭代器 = 服務器.迭代器(); 
        while (iterator.hasNext()) {
            字符串服務器 = iterator.next(); 
            整數權重 = IpPool。ipMap .get(服務器); 
            if (weight != null && weight > 0) { 
                for ( int i = 0; i < weight; i++) { 
                    serverList.add(server); 
                } 
            } 
        }
        整數索引 = new Random().nextInt(serverList.size()); 
        字符串目標 = serverList.get(index); 
        返回目標;
    } 
}

權重循環賽:

包com.spacex.concurrent.loadbalance; 
導入java.util.ArrayList;
導入java.util.Iterator;
導入java.util.List;
導入java.util.Set;
公共類WeightRoundRobin實現LoadBalance { 
    private static Integer position = 0; 
    @Override 
    public String getServer(String clientIp) { 
        Set<String> servers = IpPool. ipMap .keySet(); 
        列表<String> serverList = new ArrayList<>(); 
        迭代器<String> 迭代器 = 服務器.迭代器(); 
        while (iterator.hasNext()) {
            String serverItem = iterator.next(); 
            整數權重 = IpPool。ipMap .get(serverItem); 
            if (weight > 0) { 
                for ( int i = 0; i < weight; i++) { 
                    serverList.add(serverItem); 
                } 
            } 
        }
        同步(位置){
            如果(位置> serverList.size()){
                位置= 0; 
            }
            字符串目標 = serverList.get(位置); 
            位置++;
            返回目標;
        }
    } 
}

哈希:

包com.spacex.concurrent.loadbalance; 
導入java.util.ArrayList;
導入java.util.List;
導入java.util.Set;
公共類IpHash實現LoadBalance { 
    @Override 
    public String getServer(String clientIp) { 
        if (clientIp == null ) { 
            clientIp = "127.0.0.1" ; 
        }
        設置<String> 服務器 = IpPool。ipMap .keySet(); 
        列表<String> serverList = new ArrayList<>(); 
        serverList.addAll(服務器); 
        字符串 remoteId = clientIp;
        整數索引 = remoteId.hashCode() % serverList.size(); 
        字符串目標 = serverList.get(index); 
        返回目標;
    } 
}

測試用例:

包com.spacex.concurrent.loadbalance; 
公共類LoadBalanceMain { 
    public static void main(String[] args) { 
        run (); 
    }
    公共靜態無效運行() {
        負載平衡();
    }
    公共靜態 void loadBalance() { 
        doGetServer ( new RoundRobin()); 
        doGetServer (新的RandomLoadBalance()); 
        doGetServer (新的IpHash()); 
        doGetServer (新的WeightRoundRobin()); 
        doGetServer ( new WeightRandom()); 
    }
    public static void doGetServer(LoadBalance loadBalance) { 
        doGetServer (loadBalance, 100); 
    } 
    private static void doGetServer(LoadBalance loadBalance, int queryTimes) { 
        for ( int i = 0; i < queryTimes; i++) { 
            String serverId = loadBalance.getServer(String.valueOf ( i)); 
            系統。out .println(String.format ( " [%s] index:%s,%s" , loadBalance.getClass(). getSimpleName (), i, serverId));         }     } }

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 婷婷综合在线 | 在线观看国产福利 | 国产精品久久久久国产精品三级 | 麻豆久久久久久久 | 黄色四虎影院 | 久久久亚洲欧美综合 | www.色在线观看 | 四虎影视亚洲精品 | 欧美成人精品久久精品 | 久久精品人人做人人看最新章 | 成人网在线看 | 国产精品午夜在线观看 | 一级毛片一级片 | 国产高清在线a视频大全凹凸 | 九月婷婷亚洲综合在线 | 特大毛片 | 99国产精品久久久久久久日本 | 中国国产高清一级毛片 | 全部免费特黄特色大片中国 | 欧美第一页在线观看 | 色播播影院 | 精品手机在线 | 亚洲视频黄色 | 国产亚洲欧美在线视频 | 精品视频香蕉尹人在线 | 亚洲狠狠成人综合网 | 美女网站视频免费 | 国内国语一级毛片在线视频 | 成人99国产精品 | 日本高清视频不卡 | 成人影视在线观看 | 奇米网狠狠干 | 久久999精品 | 成 人 黄 色 大 片全部 | 亚洲免费人成在线视频观看 | 狠狠操大逼 | 特级黄色毛片 | 欧美 xx性 在线| 亚洲精品久久婷婷爱久久婷婷 | 一区二区三区www | 国产精品欧美亚洲韩国日本久久 |