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