一個(gè)巧妙的負(fù)載均衡算法 :翹動你的大腦
現(xiàn)在的負(fù)載均衡技術(shù),可以說是滿大街都是,但是我們基本都停留在了使用的階段上,并沒有真正深入去了解其核心。如果真的出現(xiàn)了問題,可
現(xiàn)在的負(fù)載均衡技術(shù),可以說是滿大街都是,但是我們基本都停留在了使用的階段上,并沒有真正深入去了解其核心。如果真的出現(xiàn)了問題,可能就很難知道是什么原因?qū)е铝耍荒苋oogle,百度了。 因此,了解一些核心的東西,還是不錯(cuò)的。
負(fù)載均衡大概流程就是,隨時(shí)收集各服務(wù)器信息或者各服務(wù)器主動上報(bào)信息,由配置主心進(jìn)行保存,計(jì)算出權(quán)重,然后根據(jù)相應(yīng)算法進(jìn)行服務(wù)機(jī)器選擇。(當(dāng)然了,這不是本文的重點(diǎn),我也說得不一定對)
我要展示的是,一個(gè)根據(jù)權(quán)重進(jìn)行機(jī)器選擇的一個(gè)巧妙算法,如下:
- int chooseOneRoute ( LB_SvrInfo * & pSvr )
- {
- double dblTotalWeight = 0.0;
- int i = 0;
- time_t curTime = time(NULL);
- //權(quán)重的計(jì)算方法是Late方法
- if ( curTime - calWeightTime >= CAL_WEIGHT_TIME_INTERVAL )
- {
- calculateWeight();
- }
- //先把各服務(wù)器權(quán)重加起來
- for ( i = 0; i < MAX_SERVER_NUM; i++ )
- {
- if ( !oServerInfo[i].isOkForRoute() ) continue;
- dblTotalWeight += oServerInfo[i].getWeight();
- }
- dblTotalWeight *= rand() / ( RAND_MAX + 1.0 );
- //做減法
- for ( i = 0; i < MAX_SERVER_NUM; i++ )
- {
- if ( !oServerInfo[i].isOkForRoute() ) continue;
- dblTotalWeight -= oServerInfo[i].getWeight();
- //找到對應(yīng)服務(wù)器
- if ( dblTotalWeight < 0 ) break;
- }
- pSvr = &( oServerInfo[i] );
- return 0;
- }
分步解釋就是:
先計(jì)算得到各機(jī)器的權(quán)重值,保存起來;
按順序?qū)⒏鳈C(jī)器權(quán)重相加,相加之后就相當(dāng)于各機(jī)器在總權(quán)重上占了各相應(yīng)的一段比例;
取隨機(jī)數(shù),得到一個(gè)0~1的隨機(jī)值,并乘以總權(quán)重,作為選中機(jī)器的標(biāo)志;
再按順序減去各機(jī)器的權(quán)重,當(dāng)減到選擇機(jī)器的權(quán)重范圍時(shí),就得到了機(jī)器號,從而選定該機(jī)器。
算法示意圖如下:
服務(wù)器權(quán)重越高,在線段上占的長度越長,被隨機(jī)數(shù)選中的概率也越大。
剛開始的時(shí)候,我以為是哪個(gè)數(shù)學(xué)家搞出來的公式得到的呢,結(jié)果原理卻出奇的簡單,所以好的東西不一定是復(fù)雜的,或者說看起來牛逼的東西,不一定就很復(fù)雜,但是肯定是大多數(shù)人意想不到的。
責(zé)任編輯:售電衡衡
免責(zé)聲明:本文僅代表作者個(gè)人觀點(diǎn),與本站無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實(shí)相關(guān)內(nèi)容。
我要收藏
個(gè)贊
-
碳中和戰(zhàn)略|趙英民副部長致辭全文
2020-10-19碳中和,碳排放,趙英民 -
兩部門:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
國家發(fā)改委、國家能源局:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè)
-
碳中和戰(zhàn)略|趙英民副部長致辭全文
2020-10-19碳中和,碳排放,趙英民 -
深度報(bào)告 | 基于分類監(jiān)管與當(dāng)量協(xié)同的碳市場框架設(shè)計(jì)方案
2020-07-21碳市場,碳排放,碳交易 -
碳市場讓重慶能源轉(zhuǎn)型與經(jīng)濟(jì)發(fā)展并進(jìn)
2020-07-21碳市場,碳排放,重慶
-
兩部門:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
國家發(fā)改委、國家能源局:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
2020年二季度福建省統(tǒng)調(diào)燃煤電廠節(jié)能減排信息披露
2020-07-21火電環(huán)保,燃煤電廠,超低排放
-
四川“專線供電”身陷違法困境
2019-12-16專線供電 -
我國能源替代規(guī)范法律問題研究(上)
2019-10-31能源替代規(guī)范法律 -
區(qū)域鏈結(jié)構(gòu)對于數(shù)據(jù)中心有什么影響?這個(gè)影響是好是壞呢!