一個(gè)巧妙的負(fù)載均衡算法 :翹動(dòng)你的大腦
負(fù)載均衡大概流程就是,隨時(shí)收集各服務(wù)器信息或者各服務(wù)器主動(dòng)上報(bào)信息,由配置主心進(jìn)行保存,計(jì)算出權(quán)重,然后根據(jù)相應(yīng)算法進(jìn)行服務(wù)機(jī)器選擇。(當(dāng)然了,這不是本文的重點(diǎn),我也說得不一定對(duì))
我要展示的是,一個(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();
- //找到對(duì)應(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ī)器號(hào),從而選定該機(jī)器。
算法示意圖如下:
服務(wù)器權(quán)重越高,在線段上占的長(zhǎng)度越長(zhǎng),被隨機(jī)數(shù)選中的概率也越大。
剛開始的時(shí)候,我以為是哪個(gè)數(shù)學(xué)家搞出來的公式得到的呢,結(jié)果原理卻出奇的簡(jiǎn)單,所以好的東西不一定是復(fù)雜的,或者說看起來牛逼的東西,不一定就很復(fù)雜,但是肯定是大多數(shù)人意想不到的。

責(zé)任編輯:售電衡衡
- 相關(guān)閱讀
- 碳交易
- 節(jié)能環(huán)保
- 電力法律
- 電力金融
- 綠色電力證書
-
碳中和戰(zhàn)略|趙英民副部長(zhǎng)致辭全文
2020-10-19碳中和,碳排放,趙英民 -
兩部門:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
國(guó)家發(fā)改委、國(guó)家能源局:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè)
-
碳中和戰(zhàn)略|趙英民副部長(zhǎng)致辭全文
2020-10-19碳中和,碳排放,趙英民 -
深度報(bào)告 | 基于分類監(jiān)管與當(dāng)量協(xié)同的碳市場(chǎng)框架設(shè)計(jì)方案
2020-07-21碳市場(chǎng),碳排放,碳交易 -
碳市場(chǎng)讓重慶能源轉(zhuǎn)型與經(jīng)濟(jì)發(fā)展并進(jìn)
2020-07-21碳市場(chǎng),碳排放,重慶
-
兩部門:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
國(guó)家發(fā)改委、國(guó)家能源局:推廣不停電作業(yè)技術(shù) 減少停電時(shí)間和停電次數(shù)
2020-09-28獲得電力,供電可靠性,供電企業(yè) -
2020年二季度福建省統(tǒng)調(diào)燃煤電廠節(jié)能減排信息披露
2020-07-21火電環(huán)保,燃煤電廠,超低排放
-
四川“專線供電”身陷違法困境
2019-12-16專線供電 -
我國(guó)能源替代規(guī)范法律問題研究(上)
2019-10-31能源替代規(guī)范法律 -
區(qū)域鏈結(jié)構(gòu)對(duì)于數(shù)據(jù)中心有什么影響?這個(gè)影響是好是壞呢!