引言:本文對(duì)負(fù)載均衡技術(shù)原理及算法進(jìn)行分析,在選課系統(tǒng)中采用了處理能力均衡和加權(quán)最小連接均衡相結(jié)合的算法,很好地解決了在選課高峰期系統(tǒng)出現(xiàn)網(wǎng)絡(luò)擁堵問題,提高了系統(tǒng)的負(fù)載承受能力。
目前高校的網(wǎng)上在線選課系統(tǒng)中,Web服務(wù)器的服務(wù)能力已經(jīng)不能滿足實(shí)際客戶訪問需要,所以,現(xiàn)在在大型應(yīng)用系統(tǒng)中多采用服務(wù)器集群,為用戶提供并發(fā)服務(wù)。集群服務(wù)器的布署要考慮如何解決任務(wù)在多個(gè)Web服務(wù)器上的均衡分配問題。如果出現(xiàn)某臺(tái)服務(wù)器過忙而不能及時(shí)響應(yīng)用戶訪問,而其他服務(wù)器卻因用任務(wù)不足未充分發(fā)揮處理能力的情況,就降低了服務(wù)器集群的整體響應(yīng)能力,形成一個(gè)較嚴(yán)重的問題,故此,負(fù)載均衡技術(shù)應(yīng)運(yùn)而生。
一、負(fù)載均衡的定義
所謂負(fù)載就是指被分配到各個(gè)Web服務(wù)器節(jié)點(diǎn)上并行去執(zhí)行的子任務(wù),是一個(gè)抽象的概念,它描述的是系統(tǒng)的閑忙程度。讓負(fù)載均衡地分配到并行系統(tǒng)的各個(gè)服務(wù)器節(jié)點(diǎn)上稱為負(fù)載均衡。負(fù)載均衡可以從以下兩個(gè)方面來理解:第一,將大量的服務(wù)數(shù)據(jù)流量或并發(fā)訪問分配到多臺(tái)Web服務(wù)器上,縮短系統(tǒng)的響應(yīng)時(shí)間,減少客戶端等待時(shí)間;第二,當(dāng)網(wǎng)絡(luò)中出現(xiàn)負(fù)載不均衡時(shí),進(jìn)行負(fù)載移動(dòng),把單個(gè)負(fù)載重的節(jié)點(diǎn)的任務(wù)轉(zhuǎn)移到到其他節(jié)點(diǎn)上,作服務(wù)并行處理,從而讓系統(tǒng)處理能力得到大幅度提升。所以,負(fù)載均衡(Load Balancing)技術(shù)就是采用一定的分配策略來平衡各個(gè)Web服務(wù)器節(jié)點(diǎn)上的負(fù)載任務(wù),使其服務(wù)保持基本相當(dāng)。
二、負(fù)載均衡目前解決的問題
目前負(fù)載均衡將要解決的主要問題有以下幾點(diǎn):
第一, 解決Web服務(wù)器擁堵現(xiàn)象,服務(wù)能夠就近得到實(shí)現(xiàn),實(shí)現(xiàn)與地理位置要素的無關(guān)性。
第二, 能夠?yàn)榭蛻舳颂峁└哔|(zhì)量的訪問服務(wù)。
第三, 提高Web服務(wù)器端響應(yīng)客戶請(qǐng)求的速度。
第四, 可以最大程度地提高Web服務(wù)器端與其他系統(tǒng)資源的利用率。
第五, 解決網(wǎng)絡(luò)單點(diǎn)故障問題,網(wǎng)絡(luò)中關(guān)鍵部位的設(shè)備出現(xiàn)故障時(shí)會(huì)導(dǎo)致整個(gè)系統(tǒng)無響應(yīng),增加冗余設(shè)備會(huì)避免單點(diǎn)故障。
三、負(fù)載均衡在選課系統(tǒng)中的架構(gòu)
本文所研究的網(wǎng)上在線選課系統(tǒng)中,學(xué)生通過客戶端向集群Web服務(wù)器發(fā)送請(qǐng)求后,交換機(jī)與負(fù)載均衡器接受服務(wù)的請(qǐng)求,通過相應(yīng)的負(fù)載均衡分配算法選定一臺(tái)Web服務(wù)器來響應(yīng)當(dāng)前的請(qǐng)求,接受訪問請(qǐng)求的Web服務(wù)器與后臺(tái)數(shù)據(jù)庫SQL Sever 2000連接,將最終請(qǐng)求數(shù)據(jù)返回給客戶端。
根據(jù)高校網(wǎng)上在線選課服務(wù)平臺(tái)設(shè)計(jì)目標(biāo)與網(wǎng)絡(luò)服務(wù)訪問量的需求,確定的負(fù)載均衡總體規(guī)劃方案是:客戶端的訪問通過網(wǎng)絡(luò)防火墻和交換機(jī),然后再經(jīng)過負(fù)載均衡器引導(dǎo)給某臺(tái)Web服務(wù)器,負(fù)載均衡器負(fù)責(zé)請(qǐng)求服務(wù)數(shù)據(jù)流量分配,它通過動(dòng)態(tài)服務(wù)器域名解析實(shí)現(xiàn)多臺(tái)Web服務(wù)在網(wǎng)絡(luò)中動(dòng)態(tài)分擔(dān)流量;這樣可以提高整體網(wǎng)絡(luò)的訪問速度和穩(wěn)定性,考慮到選課系統(tǒng)是用靜態(tài)頁面與動(dòng)態(tài)頁面技術(shù),需要在Web服務(wù)器與數(shù)據(jù)庫服務(wù)器之間連接一臺(tái)應(yīng)用服務(wù)器,來處理訪問與請(qǐng)求的數(shù)據(jù)和靜態(tài)頁面,并把生成的靜態(tài)頁面能夠自動(dòng)分配給多臺(tái)Web服務(wù)器;這樣部署方案的優(yōu)勢(shì)主要體現(xiàn)在:多臺(tái)Web服務(wù)器之間成互相存儲(chǔ)與備份,當(dāng)其中一臺(tái)Web服務(wù)器出設(shè)備硬件故障,但是并不影響其它任何一臺(tái)Web服務(wù)的應(yīng)用和訪問;當(dāng)SQL Server數(shù)據(jù)庫服務(wù)器出現(xiàn)問題時(shí),也同樣不會(huì)對(duì)Web服務(wù)器的應(yīng)用和訪問產(chǎn)生影響,數(shù)據(jù)庫服務(wù)器之間還是能夠?qū)崿F(xiàn)訪問的數(shù)據(jù)同步,即是數(shù)據(jù)庫雙存儲(chǔ)的原理。
四、負(fù)載均衡實(shí)現(xiàn)算法
負(fù)載均衡的核心內(nèi)容是一種服務(wù)性調(diào)度尋優(yōu)算法,即是指將各個(gè)子服務(wù)任務(wù)比較均衡的分布給不同的Web服務(wù)器節(jié)點(diǎn)上并行處理,從而使各個(gè)服務(wù)器的利用達(dá)到最大程度的均衡。算法闡述如下:
(一) 基本粒子群算法
在粒子群算法中,每個(gè)個(gè)體稱為“粒子”,代表著一個(gè)潛在的解,多個(gè)粒子共存,合作尋優(yōu)。每個(gè)粒子根據(jù)自身的歷史最優(yōu)值和種群的歷史最優(yōu)值,在解空間中向更好的位置飛行,搜索最優(yōu)解。
基本粒子群算法的數(shù)學(xué)模型如下:
設(shè)搜索空間為D維,總粒子數(shù)為n. 第i個(gè)粒子位置表示為向量 ;第i個(gè)粒子個(gè)體歷史最優(yōu)位置記為 ;種群歷史最優(yōu)位置 為所有的 中的最優(yōu);第i個(gè)粒子的位置速度為向量 .每個(gè)粒子的位置按下式公式進(jìn)行更新:
(1)
(2)
(二) 引入混沌優(yōu)化的粒子群算法
混沌運(yùn)動(dòng)能在一定范圍內(nèi)按其自身“規(guī)律”不重復(fù)遍歷所有狀態(tài)。利用這種遍歷性來初始化粒子,可以優(yōu)化粒子群算法的粒子初始分布,加強(qiáng)算法的全局搜索能力。
一個(gè)典型的混沌系統(tǒng)是由Logistic方程產(chǎn)生:
(3)
高鷹等將混沌優(yōu)化思想引入到了粒子群優(yōu)化算法中,提出了混沌粒子群優(yōu)化算法(CPSO)。 混沌粒子群算法的基本思想主要體現(xiàn)在以下兩個(gè)方面:
1.采用混沌序列初始化粒子的位置和速度,既沒有改變粒子群算法初始化時(shí)有的隨機(jī)性,又利用了混沌提高了粒子的種群多樣性和搜索遍歷性。在產(chǎn)生大量初始群體的基礎(chǔ)上,擇優(yōu)出粒子群算法的初始群體,加強(qiáng)算法的全局搜索能力。
2.以當(dāng)前整個(gè)粒子群迄今為止搜索到的最優(yōu)位置為基礎(chǔ)產(chǎn)生混沌序列,把產(chǎn)生的混沌序列中的最優(yōu)位置粒子替代當(dāng)前粒子群中的一個(gè)粒子的位置。 引入混沌序列的搜索算法可在迭代中產(chǎn)生局部最優(yōu)解的許多鄰域點(diǎn),以此幫助惰性粒子逃離局部極值點(diǎn),并快速搜尋到全局最優(yōu)解。
混沌粒子群優(yōu)化算法在進(jìn)行負(fù)載均衡分配過程的具體實(shí)現(xiàn)步驟如下:
第一步:初始化設(shè)置最大允許迭代次數(shù)或誤差精度,以及混沌粒子群優(yōu)化算法相關(guān)參數(shù):慣性權(quán)重、學(xué)習(xí)因子。
第二步:初始化粒子的位置和速度:
1.隨機(jī)產(chǎn)生一個(gè)n維的每個(gè)分量數(shù)值在0-1之間的向量 ,n為目標(biāo)函數(shù)中的變量個(gè)數(shù),根據(jù)式(3),得到N個(gè)向量 ;
2.將 的各個(gè)分量載波到變量的取值區(qū)間;
3.計(jì)算粒子群的適應(yīng)度,并從N個(gè)初始群體中選擇性能較好的M個(gè)解作為初始種群,隨機(jī)產(chǎn)生M個(gè)初始速度;
第三步:如果粒子適應(yīng)度優(yōu)于其個(gè)體極值 , 更新為新位置;如果某個(gè)體極值優(yōu)于全局極值 , 更新為新位置;
第四步:根據(jù)公式(1)~(2)更新粒子的位置和速度;
第五步:對(duì)最優(yōu)位置 ,施加混沌擾動(dòng). 將 映射到方程(4)的定義域[0,1]. 然后,用Logistic方程進(jìn)行迭代產(chǎn)生混沌變量序列 ,再把產(chǎn)生的混沌變量序列通過逆映射返回到原解空間,得:
在原解空間對(duì)混沌變量經(jīng)歷的每一個(gè)可行解 計(jì)算其適應(yīng)度,得到性能最好的可行解 ;
第六步:用 取代當(dāng)前群體中任意一個(gè)粒子的位置;
第七步:若滿足停止條件,則搜索停止,輸出全局最優(yōu)位置,否則返回第三步。
(作者單位:臨沂大學(xué))
作者簡(jiǎn)介
王浩,1993年5月生,山東省蘭陵縣人,臨沂大學(xué)2012級(jí)軟件工程專業(yè)本科生。
高宗振:本文指導(dǎo)教師。