多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > 框架設(shè)計(jì) > 17. Dubbo原理解析-集群&容錯(cuò)之負(fù)載均衡

17. Dubbo原理解析-集群&容錯(cuò)之負(fù)載均衡

來源:程序員人生   發(fā)布時(shí)間:2015-01-05 08:41:35 閱讀次數(shù):11718次

LoadBalance負(fù)載均衡, 負(fù)責(zé)從多個(gè) Invokers當(dāng)選出具體的1個(gè)Invoker用于本次調(diào)用,調(diào)用進(jìn)程中包括了負(fù)載均衡的算法,調(diào)用失敗后需要重新選擇

LoadBalance接口定義

@SPI(RandomLoadBalance.NAME)

public interface LoadBalance{

@Adaptive("loadbalance")

<T> Invoker<T> select(List<Invoker<T>> invokers,URL url, Invocation invocation)throws RpcException;

}

類注解@SPI說明可以基于Dubbo的擴(kuò)大機(jī)制進(jìn)行自定義的負(fù)責(zé)均衡算法實(shí)現(xiàn),默許是隨機(jī)算法

方法注解@Adaptive說明能夠生成設(shè)配方法

Select方法設(shè)配類通過url的參數(shù)選擇具體的算法, 在從invokers集合中根據(jù)具體的算法選擇1個(gè)invoker

 

 

1. RandomLoadBalance: 隨機(jī)訪問策略,按權(quán)重設(shè)置隨機(jī)幾率,是默許策略

1)獲得所有invokers的個(gè)數(shù)

2)遍歷所有Invokers, 獲得計(jì)算每一個(gè)invokers的權(quán)重,并把權(quán)重累計(jì)加起來

每相鄰的兩個(gè)invoker比較他們的權(quán)重是不是1樣,有1個(gè)不1樣說明權(quán)重不均等

3)總權(quán)重大于零且權(quán)重不均等的情況下

按總權(quán)重獲得隨機(jī)數(shù)offset = random.netx(totalWeight);

遍歷invokers肯定隨機(jī)數(shù)offset落在哪一個(gè)片斷(invoker上)



4)權(quán)重相同或總權(quán)重為0, 根據(jù)invokers個(gè)數(shù)均等選擇

invokers.get(random.nextInt(length))

 

      

2. RoundRobinLoadBalance:輪詢,按公約后的權(quán)重設(shè)置輪詢比率

1)獲得輪詢key  服務(wù)名+方法名

獲得可供調(diào)用的invokers個(gè)數(shù)length

設(shè)置最大權(quán)重的默許值maxWeight=0

設(shè)置最小權(quán)重的默許值minWeight=Integer.MAX_VALUE

2)遍歷所有Inokers,比較出得出maxWeight和minWeight

3)如果權(quán)重是不1樣的

根據(jù)key獲得自增序列

自增序列加1與最大權(quán)重取模默許得到currentWeigth

遍歷所有invokers挑選出大于currentWeight的invokers

設(shè)置可供調(diào)用的invokers的個(gè)數(shù)length

4)自增序列加1并與length取模,從invokers獲得invoker

 

 

3. LeastActiveLoadBalance: 最少活躍調(diào)用數(shù), 相同的活躍的隨機(jī)選擇,

活躍數(shù)是指調(diào)用前后的計(jì)數(shù)差, 使慢的提供者收到更少的要求,由于越慢的提供者前后的計(jì)數(shù)差越大。

活躍計(jì)數(shù)的功能消費(fèi)者是在ActiveLimitFilter中設(shè)置的



4. 最少活躍的選擇進(jìn)程以下:

1)獲得可調(diào)用invoker的總個(gè)數(shù)

初始化最小活躍數(shù),相同最小活躍的個(gè)數(shù)

相同最小活躍數(shù)的下標(biāo)數(shù)組

等等

2)遍歷所有invokers, 獲得每一個(gè)invoker的獲得數(shù)active和權(quán)重

找出最小權(quán)重的invoker

如果有相同最小權(quán)重的inovkers, 將下標(biāo)記錄到數(shù)組leastIndexs[]數(shù)組中

累計(jì)所有的權(quán)重到totalWeight變量

3)如果invokers的權(quán)重不相等且totalWeight大于0

按總權(quán)重隨機(jī)offsetWeight = random.nextInt(totalWeight)

計(jì)算隨機(jī)值在哪一個(gè)片斷上并返回invoker


4)如果invokers的權(quán)重相等或totalWeight等于0,均等隨機(jī)

 

 

5. ConsistentHashLoadBalance:1致性hash, 相同參數(shù)的要求總是發(fā)到同1個(gè)提供者,當(dāng)某1臺(tái)提供者掛時(shí),本來發(fā)往該提供者的要求,基于虛擬節(jié)點(diǎn),平攤到其它提供者,不會(huì)引發(fā)劇烈變動(dòng)。對(duì)1致性哈希算法介紹網(wǎng)上很多,這個(gè)給出1篇http://blog.csdn.net/sparkliang/article/details/5279393供參考,讀者請(qǐng)自行瀏覽ConsistentashLoadBalance中對(duì)1致性哈希算法的實(shí)現(xiàn),還是比較通俗易懂的這里不再
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: www在线观看免费 | 国产视频h| 极品美女国产精品免费一区 | 久久国产精品免费 | 免费伊人 | 一级爱爱 | 欧美yw精品日本国产精品 | 艹碰在线 | 成人在线一区二区三区 | 亚洲人成777 | 碰超丶在线免费 | 欧美高清免费精品国产自 | 在线观看v片 | 日本免费人成在线网站 | 日本免费在线一区 | 欧美一级毛片无遮 | 日本护士ooowww | 亚洲成网站www久久九 | 中文字幕日本在线视频二区 | 最近韩国中文字幕更新 | 香蕉在线精品亚洲第一区 | 欧美精品99毛片免费高清观看 | xxxxxx性受 | 网全大全黄 | 欧美 亚洲 校园 第一页 | 亚洲第一网址 | 欧美图片小说视频 | 国产成人av在线 | 亚洲综合色网站 | 激情视频网址 | 欧美色综合高清免费 | 欧美孕交videosfree另类 | 国产成人精品免费视频网页大全 | 美女网站视频在线 | 国产亚洲欧美视频 | 亚洲在线看片 | 男女午夜视频 | v天堂网| 77777亚洲午夜久久多喷 | 国产一区二区免费视频 | 国产精品欧美视频另类专区 |