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