大战熟女丰满人妻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ù)文檔推薦 >>
主站蜘蛛池模板: 99re热这里只有精品视频 | 亚洲日产综合欧美一区二区 | 久久国产精品一国产精品金尊 | 最近中文字幕在线视频1 | 亚洲国产精品成人综合色在线婷婷 | 国产一国产一级毛片视频在线 | 无遮挡无遮挡91桃色在线观看 | 奇米111| 波多野结衣一区二区在线 | 欧美精品亚洲精品日韩一区 | 男女车车好快的车车免费网站 | 成年人视频黄色 | 四虎www免费人成 | 久久精品这里 | 伊人久久精品亚洲精品一区 | 久久www成人看片 | 香蕉午夜视频 | 神马影院午夜剧场 | 午夜操一操 | 久青草视频97国内免费影视 | 四虎影视免费 | 欧洲成人免费高清视频 | 亚洲精品第一国产麻豆 | 国产乱人视频在线播放不卡 | 亚洲欧美在线看 | 久久精品国产99国产精品澳门 | 夜色私人影院永久入口 | 95视频在线观看在线分类h片 | 亚洲成人在线播放视频 | 全黄一级裸片视频免费区 | 中文字幕人成乱码第一页 | 97精品视频在线观看 | 免费操片 | 国产亚洲欧美在线 | 久久黄色视屏 | 国产精品久久久久亚洲 | 美女毛片| 在线有码 | 亚洲精品国产福利片 | 日日躁夜夜躁狠狠天天 | 夜夜爽日日澡人人添 |