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