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

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

什么是Java負載均衡算法

更新時間:2022-08-23 09:53:36 來源:動力節(jié)點 瀏覽920次

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

IpPool 和 LoadBalance 接口:

包com.spacex.concurrent.loadbalance; 
導(dǎo)入java.util.Map;
導(dǎo)入java.util.concurrent.ConcurrentHashMap;
公共類IpPool { 
    public static Map<String, Integer> ipMap = new ConcurrentHashMap<>(); 
    靜態(tài){ 
        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); 
}

循環(huán):

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

隨機的:

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

權(quán)重隨機:

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

權(quán)重循環(huán)賽:

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

哈希:

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

測試用例:

包com.spacex.concurrent.loadbalance; 
公共類LoadBalanceMain { 
    public static void main(String[] args) { 
        run (); 
    }
    公共靜態(tài)無效運行() {
        負載平衡();
    }
    公共靜態(tài) 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)); 
            系統(tǒng)。out .println(String.format ( " [%s] index:%s,%s" , loadBalance.getClass(). getSimpleName (), i, serverId));         }     } }

 

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 手机在线看福利 | 亚洲激情网址 | 香蕉久久成人网 | 亚洲人jizz | 欧美亚洲国产成人高清在线 | 亚洲最大成人综合网 | 色偷偷亚洲天堂 | 久久夜色精品国产欧美 | 免费在线中文字幕 | 久久综合99re88久久爱 | 久久精品在线 | 久操福利 | 久久久综合九色合综 | 天天干夜夜撸 | 亚洲国产综合在线 | 国内拍拍自拍视频在线观看 | 午夜私人影院在线观看 | 高清国产在线 | 一本到中文字幕高清不卡在线 | 成人一级黄色片 | 波多野结衣亚洲一区 | 四虎影院在线观看免费 | jizz中国zz女人18 | 欧美一级看片a免费视频 | 中文精品久久久久中文 | 国产专区日韩精品欧美色 | 国产高清久久 | 深夜成人性视频免费看 | 亚洲国产天堂久久九九九 | a毛片久久免费观看 | 97在线影院 | 亚洲最大激情中文字幕 | 国产伦码精品一区二区 | 国产精品不卡在线 | 青青青爽视频在线观看 | 九色视频极品论坛区 | 涩涩视频观看 | 看特级大黄一片 | 爱爱视频欧美 | 国产成人精品高清免费 | av大片|