摘 要: 基于動態(tài)負反饋的機制,參考現(xiàn)有的加權(quán)最小連接數(shù)調(diào)度和輪轉(zhuǎn)調(diào)度算法,設(shè)計出了改進后的負載均衡調(diào)度算法。通過負反饋機制計算每臺服務器的綜合負載權(quán)重值,而綜合負載權(quán)重值直接體現(xiàn)著服務器的當前處理能力。調(diào)度服務器根據(jù)綜合負載權(quán)重值分配工作負載,實現(xiàn)負載的均衡分布。
關(guān)鍵詞: Red5流媒體服務器;集群技術(shù);負載均衡
1 常用負載均衡算法
常見的負載均衡調(diào)度算法有:輪轉(zhuǎn)調(diào)度算法、加權(quán)輪轉(zhuǎn)調(diào)度算法、最小連接數(shù)調(diào)度算法、加權(quán)最小連接數(shù)調(diào)度算法、目標地址哈希散列調(diào)度算法、源地址哈希散列調(diào)度算法等[1]。
下面主要介紹輪轉(zhuǎn)調(diào)度算法和加權(quán)最小連接數(shù)調(diào)度算法的思想。
?。?)輪轉(zhuǎn)調(diào)度算法[2]
輪轉(zhuǎn)調(diào)度算法平等地對待集群中各個服務器,認為所有服務器具有相同的處理性能。此算法將所有的n臺服務器當作一個任務隊列,當一個新的用戶連接請求到來時,執(zhí)行i=(i+1)modi,然后分配任務給第i臺服務器。
?。?)加權(quán)最小連接數(shù)調(diào)度算法[3]
加權(quán)輪轉(zhuǎn)調(diào)度算法是輪轉(zhuǎn)調(diào)度算法的改進,加權(quán)最小連接數(shù)調(diào)度算法是最小連接數(shù)調(diào)度算法的進一步改進,它很好地改進了最小連接數(shù)調(diào)度算法無法很好地處理集群中服務器間處理性能差異較大的缺點。即此時滿足條件的服務器就是集群中正在處理的請求連接數(shù)與自身權(quán)值的比值最小的服務器,就認為它是當前負載最小的服務器,負載均衡器就會把新的請求連接交給這臺服務器來處理。
2 動態(tài)反饋機制
負載均衡調(diào)度服務器收集負載信息的本質(zhì),就是每臺服務器節(jié)點將自身的負載情況反饋給調(diào)度服務器的過程。這就是動態(tài)反饋機制[4],如圖1所示。
圖1中,W為服務器更新之前狀態(tài)時的權(quán)值,集群中每臺服務器節(jié)點都會定期與調(diào)度服務器交互,將自身的負載信息情況反饋給調(diào)度服務器。在負載均衡調(diào)度服務器上,根據(jù)設(shè)計好的算法F()將這些負載信息進行處理,重新調(diào)整當前情況下服務器的新權(quán)值W′,然后更新負載信息表,這樣能夠更好地反映出當前服務器的負載情況。
3 動態(tài)負反饋機制負載均衡調(diào)度算法
3.1 流媒體服務器綜合權(quán)值的計算
借鑒加權(quán)最小連接數(shù)調(diào)度算法的思想,應該為每臺流媒體服務器設(shè)定一個綜合權(quán)值。計算綜合權(quán)值所需要的指標如下[5]:
SCPUi:代表集群中第i臺流媒體服務器的CPU使用率;
SMemi:代表集群中第i臺流媒體服務器的內(nèi)存使用率;
SNeti:代表集群中第i臺流媒體服務器的網(wǎng)絡帶寬占用率;
SDiski:代表集群中第i臺流媒體服務器的硬盤I/O占用率;
SRoomi:代表集群中第i臺流媒體服務器的聊天室數(shù)量占用率。
?。?)Red5流媒體服務器開始運行后,將加入到集群中,同時會在負載均衡調(diào)度服務器上進行注冊,將自身相關(guān)信息(IP、提供服務的端口號等)發(fā)送給調(diào)度服務器;
?。?)調(diào)度服務器周期性地與每臺流媒體服務器交互(設(shè)定周期時間為10 s),采集負載信息。在流媒體服務器上,負載信息收集線程收集實時負載,通過式(2)計算實時負載Loadi,并將Loadi發(fā)送給調(diào)度服務器;
?。?)調(diào)度服務器與流媒體服務器之間通過心跳檢測進行檢測,如果3 min內(nèi)調(diào)度服務器未收到流媒體服務器的心跳,則該服務器不可用;
(4)如果當前流媒體服務器上某個負載評估指標超過設(shè)定的負載上限閾值,發(fā)送過載通知;
?。?)調(diào)度服務器將維護一張綜合負載權(quán)重值表,在收集并計算每臺流媒體服務器的綜合負載之后,通過式(9)計算出綜合負載權(quán)重值W′i,更新表中數(shù)據(jù);
?。?)根據(jù)新的權(quán)值,調(diào)度服務器將所有正常工作的服務器按照權(quán)值從高到低分為三組;
(7)新的請求到來時,根據(jù)步驟(6)中所分出的權(quán)重值最大的一組,依照輪詢調(diào)度算法思想分配任務;
?。?)判斷是否是新的采樣周期,如果不是則繼續(xù)步驟(7),否則轉(zhuǎn)向步驟(2);
?。?)如果當前沒有合適的服務器,則暫時停止響應用戶請求,通知用戶等待。
4 算法測試與分析
評價集群系統(tǒng)整體性能有一個重要的參數(shù)指標:平均響應時間。測試所用環(huán)境如表1、表2所示。
根據(jù)表3的數(shù)據(jù),在并發(fā)請求數(shù)量不是很多的情況下,兩種算法的平均響應時間差不多。當并發(fā)量逐漸增大后,這時改進算法的效率明顯優(yōu)于加權(quán)最小連接數(shù)調(diào)度算法。
集群系統(tǒng)的穩(wěn)定性也是必須需要考慮的問題。當采用加權(quán)最小連接數(shù)調(diào)度算法時,每臺Red5流媒體服務器的負載情況變化如圖2所示(采樣周期為10 s)。
從圖2和圖3可知,改進的負載均衡調(diào)度算法很好地保證了整個集群的負載均衡,同時也能很好地處理當大量并發(fā)請求到來時的情況。
本文通過在輪轉(zhuǎn)調(diào)度算法和動態(tài)加權(quán)最小連接數(shù)調(diào)度算法的基礎(chǔ)上,設(shè)計了一種基于動態(tài)負反饋機制的負載均衡調(diào)度算法,能夠更好地考慮到集群中每臺流媒體服務器的處理性能,達到更好地負載均衡效率。而通過實驗對比,可知改進的負載均衡調(diào)度算法具有更短的平均用戶響應時間,也能保證集群長時間的穩(wěn)定運行,能夠達到負載均衡的目的。
參考文獻
[1] 買京京.Web服務器集群負載均衡技術(shù)研究[D].太原:中北大學,2008.
[2] 童瑞霞.基于動態(tài)反饋機制的集群負載均衡算法研究[D].武漢:武漢理工大學,2011.
[3] 秦曉晨.基于動態(tài)負載均衡技術(shù)的培訓系統(tǒng)的設(shè)計與實現(xiàn)[D].西安:西安電子科技大學,2012.
[4] 陳廣東.流媒體服務器集群負載均衡算法研究[D].武漢:華中師范大學,2007.
[5] 張洪武.服務器集群與均衡技術(shù)研究[D].重慶:重慶大學,2005.