黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

什么是Java負載均衡算法

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

這是一個在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ù)器); 
        字符串目標 =無效的;
        同步的(位置) {
            如果(位置> serverList.size() - 1) {
                位置= 0; 
            }
            目標 = serverList.get(位置);
            位置++; 
        }
        返回目標; 
    } 
}

隨機的:

包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());
        字符串目標 = serverList.get(randomIndex); 
        返回目標;
    } 
}

權(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()); 
        字符串目標 = serverList.get(index); 
        返回目標;
    } 
}

權(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; 
            }
            字符串目標 = serverList.get(位置); 
            位置++;
            返回目標;
        }
    } 
}

哈希:

包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(); 
        字符串目標 = serverList.get(index); 
        返回目標;
    } 
}

測試用例:

包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ù)文檔推薦 >>
主站蜘蛛池模板: 免费视频网站在线观看黄 | 欧美成人私人视频88在线观看 | 免费中文字幕在线观看 | 欧美视频第一页 | 美女免费视频一区二区三区 | 国产精品莉莉欧美自在线线 | 国产婷婷色一区二区三区深爱网 | 国产成人精品三级在线 | 男女男精品视频网站 | sss在线观看 | 在线精品播放 | 开心激情综合 | 日日摸夜夜欧美一区二区 | 欧美性猛交xxxx免费看手交 | 亚洲国产综合精品 | 无遮羞无删减肉动漫在线观看 | 极品美女啪啪无套 | 一本大道香蕉高清久久 | dy888午夜国产精品不卡 | 开心婷婷激情五月 | 在线观看成人网 | 青青草国产精品久久 | 色视频在线看 | 青青草国产免费一区二区 | 欧美性猛交ⅹxxx乱大交免费 | 亚洲日本va | 免费观看日批视频 | 亚洲欧美日韩中文在线制服 | 国产在线精品观看一区 | 99re5精品视频在线观看 | 午夜成年免费观看视频 | 午夜看一级特黄a大片黑 | 日本高清在线播放一区二区三区 | 欧美日本在线一区二区三区 | 一个人看www在线高清免费看 | 午夜剧场免费观看 | 黄色网址免费在线播放 | 日日干日日爽 | 怡红院美国十次成人影院 | 中文字幕在线看视频一区二区三区 | 欧美第九页 |