摘要:樣例實(shí)現(xiàn)一實(shí)現(xiàn)二總個(gè)數(shù)總權(quán)重權(quán)重是否都一樣累計(jì)總權(quán)重計(jì)算所有權(quán)重是否一樣如果權(quán)重不相同且權(quán)重大于則按總權(quán)重?cái)?shù)隨機(jī)并確定隨機(jī)值落在哪個(gè)片斷上如果權(quán)重相同或權(quán)重為則均等隨機(jī)想獲取最新內(nèi)容,請(qǐng)關(guān)注微信公眾號(hào)
樣例
private Map實(shí)現(xiàn)一serverMap = new HashMap (){{ put("192.168.1.100",1); put("192.168.1.101",1); put("192.168.1.102",4); put("192.168.1.103",1); put("192.168.1.104",1); put("192.168.1.105",3); put("192.168.1.106",1); put("192.168.1.107",2); put("192.168.1.108",1); put("192.168.1.109",1); put("192.168.1.110",1); }}; private List servers = new ArrayList<>(serverMap.keySet());
public void weightRandom(){ SetkeySet = serverMap.keySet(); List servers = new ArrayList (); for(Iterator it = keySet.iterator();it.hasNext();){ String server = it.next(); int weight = serverMap.get(server); for(int i=0;i 實(shí)現(xiàn)二 public String randomWeight(){ int length = serverMap.size(); // 總個(gè)數(shù) int totalWeight = 0; // 總權(quán)重 boolean sameWeight = true; // 權(quán)重是否都一樣 for (int i = 0; i < length; i++) { int weight = serverMap.get(servers.get(i)); totalWeight += weight; // 累計(jì)總權(quán)重 if (sameWeight && i > 0 && weight != serverMap.get(servers.get(i-1))) { sameWeight = false; // 計(jì)算所有權(quán)重是否一樣 } } if (totalWeight > 0 && ! sameWeight) { // 如果權(quán)重不相同且權(quán)重大于0則按總權(quán)重?cái)?shù)隨機(jī) int offset = ThreadLocalRandom.current().nextInt(totalWeight); // 并確定隨機(jī)值落在哪個(gè)片斷上 for (int i = 0; i < length; i++) { offset -= serverMap.get(servers.get(i)); if (offset < 0) { return servers.get(i); } } } // 如果權(quán)重相同或權(quán)重為0則均等隨機(jī) return servers.get(ThreadLocalRandom.current().nextInt(length)); }docdubbo-RandomLoadBalance
想獲取最新內(nèi)容,請(qǐng)關(guān)注微信公眾號(hào)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67135.html
摘要:集群擴(kuò)展當(dāng)有多個(gè)服務(wù)提供方時(shí),將多個(gè)服務(wù)提供方組織成一個(gè)集群,并偽裝成一個(gè)提供方。目錄服務(wù)的頭部注釋中,引用做了一個(gè)介紹。路由規(guī)則負(fù)責(zé)從多個(gè)中按路由規(guī)則選出子集,比如按照讀寫分離應(yīng)用隔離等。若處理完畢則計(jì)數(shù)器減。 1. Cluster-集群擴(kuò)展 當(dāng)有多個(gè)服務(wù)提供方時(shí),將多個(gè)服務(wù)提供方組織成一個(gè)集群,并偽裝成一個(gè)提供方。已知的實(shí)現(xiàn)如下, 1-1. FailoverCluster(默認(rèn)的)...
摘要:即服務(wù)提供者目前正在處理的請(qǐng)求數(shù)一個(gè)請(qǐng)求對(duì)應(yīng)一條連接最少,表明該服務(wù)提供者效率高,單位時(shí)間內(nèi)可處理更多的請(qǐng)求。此時(shí)應(yīng)優(yōu)先將請(qǐng)求分配給該服務(wù)提供者。初始情況下,所有服務(wù)提供者活躍數(shù)均為。 1.簡(jiǎn)介 LoadBalance 中文意思為負(fù)載均衡,它的職責(zé)是將網(wǎng)絡(luò)請(qǐng)求,或者其他形式的負(fù)載均攤到不同的機(jī)器上。避免集群中部分服務(wù)器壓力過大,而另一些服務(wù)器比較空閑的情況。通過負(fù)載均衡,可以讓每臺(tái)服務(wù)...
摘要:一篇讀懂分布式架構(gòu)下的負(fù)載均衡微信公眾號(hào)一刻鐘大型現(xiàn)實(shí)非嚴(yán)肅主義現(xiàn)場(chǎng)一刻鐘與你分享優(yōu)質(zhì)技術(shù)架構(gòu)與見聞,做一個(gè)有劇情的程序員關(guān)注可第一時(shí)間了解更多精彩內(nèi)容,定期有福利相送喲。 一篇讀懂分布式架構(gòu)下的負(fù)載均衡 微信公眾號(hào):IT一刻鐘大型現(xiàn)實(shí)非嚴(yán)肅主義現(xiàn)場(chǎng)一刻鐘與你分享優(yōu)質(zhì)技術(shù)架構(gòu)與見聞,做一個(gè)有劇情的程序員關(guān)注可第一時(shí)間了解更多精彩內(nèi)容,定期有福利相送喲。 showImg(https:/...
閱讀 1735·2021-10-18 13:34
閱讀 3925·2021-09-08 10:42
閱讀 1568·2021-09-02 09:56
閱讀 1620·2019-08-30 15:54
閱讀 3143·2019-08-29 18:44
閱讀 3312·2019-08-26 18:37
閱讀 2229·2019-08-26 12:13
閱讀 471·2019-08-26 10:20