?

大型在線考試系統負載均衡算法的研究與實踐

2020-08-13 07:17楊曉吟
軟件 2020年6期
關鍵詞:在線考試負載均衡算法

摘 ?要: 隨著網絡信息技術的飛速發展,在線考試系統在各大院校推廣。當同時在線考試的人數達到萬人以上時,服務器面臨著嚴峻的考驗。本文在分析了常用的負載均衡技術和負載均衡策略的基礎上,提出了適于大型在線考試系統的應用需求和特點的負載均衡算法—TEST算法,該算法根據服務器集群中每臺服務器的CPU占用率、內存的利用率、網絡帶寬占用率作為影響因素,計算服務器權值,并引入負載冗余參數,共同來判斷服務器處理新的請求能力,通過仿真實驗,TEST算法有效地提高了大型在線考試系統的響應效率。

關鍵詞: 在線考試;負載均衡;服務器集群;算法

中圖分類號: TP399 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.06.006

本文著錄格式:楊曉吟. 大型在線考試系統負載均衡算法的研究與實踐[J]. 軟件,2020,41(06):2731

【Abstract】: With the rapid development of information technology and the continuous expansion of network applications, the online examination system has been promoted in universities and colleges. When the number of simultaneous online exams reaches more than 10,000, the server is facing a severe test. This paper is based on the analysis of common load balancing technology and strategy, and proposes a TEST algorithm which is suitable for the application requirements and characteristics of large-scale online examination systems. This algorithm takes CPU usage, memory utilization and network bandwidth occupancy as judgment factors, and calculates the server weight, and introduces parameter load redundancy to judge the servers ability to process new requests. Through simulation experiments, the result confirms that the response time using the TEST algorithm faster and more efficient improving response efficiency for large-scale online examination systems.

【Key words】: Online examination; Load balancing; Server cluster; Algorithm

0 ?引言

隨著教育技術的不斷進步,傳統的紙質考試逐漸被無紙化的在線考試系統取代,為滿足素質教育,題目有圖像、音頻、視頻、動畫等多媒體形式。由于在線考試中需要大量多媒體數據,并且大型在線考試系統,一般同時參加的考生數在五千人左右,甚至達到萬人以上,考生需要將考試信息提交到服務器,當開始考試和結束考試的時間點里不可避免地出現系統忙碌,而在其他時間段中則比較空閑,一旦服務器在高峰期出現流量過載現象,造成服務器負載壓力過大,就會導致在線考試系統的不穩定,甚至的這個考試的順利完成造成影響。為解決這一難題,對大型在線考試系統的負載均衡算法的實現進行研究與實踐。

1 ?常用負載均衡系統

目前的負載均衡系統主要有四類:基于DNS的負載均衡、基于反向代理的負載均衡、基于HTTP重定向的負載均衡和基于NAT的負載均衡[1]。

1.1 ?基于DNS的負載均衡

DNS是域名解析系統,當我們輸入域名訪問網站時,DNS服務器會將域名映射成IP地址,這個映射可以是一對多的,不同的IP對應不同的服務器,也就是說DNS將域名請求根據策略分配到不同的服務器上,從而達到負載均衡的目的?;贒NS的負載均衡技術比較適用于廣域網的負載均衡的實現。

1.2 ?基于反向代理的負載均衡

基于反向代理的負載均衡系統是指使用代理服務器來接收客戶端的請求,然后再將用戶請求轉發給其他服務器,并將服務器的結果返回給客戶端,從而達到負載均衡的目的。由于反向代理服務器隔離了外部對網站服務器的攻擊,所以方向代理負載均衡系統的一個顯著優勢是能提高網站服務器的安全性。但是每一次代理的過程都需要完成對外和對內兩個連接,所以當在連接請求數量激增時,代理服務器的負載壓力就雙倍增加,最終導致反向代理服務器成為負載系統中的瓶頸。

1.3 ?基于HTTP重定向的負載均衡

在HTTP重定向的負載均衡系統中,HTTP重定向服務器根據客戶端的HTTP請求以及據配置的負載均衡算法計算出真實的服務器地址,并將此服務器地址寫進HTTP重定向響應中再返回客戶端??蛻舳藶g覽器獲得響應后,根據返回的信息,重新發送請求到新的服務器上。其的優點是實現方法簡單并且自帶會話保持功能,缺點是后臺服務器使用的是VIP即真實IP地址,因此某些用戶可能會繞過負載均衡服務器直接定位到某臺服務器,降低了服務器的安全性,同時HTTP重定向負載均衡技術只能實現HTTP服務的負載均衡,在網絡服務類型的選擇上具有局限性。

1.4 ?基于NAT的負載均衡

NAT是Network Address Translation的英文單詞的首字母,中文名稱是網絡地址轉換,NAT可以將外部 IP地址與內部IP地址進行一對多的映射,客戶端通過外部IP訪問應用,NAT動態選擇其中一個內部地址與外部地址關聯,從而實現均衡的目標[2]。NAT負載均衡是一種比較成熟的負載均衡技術,既可以用軟件實現也可以用硬件的方式來實現,同時負載均衡算法也比較靈活多樣。

2 ?大型在線考試系統負載均衡算法的設計

在線考試系統的負載均衡的實現普遍采用的是基于NAT的負載均衡方案。大型在線考試系統的負載均衡系統的搭建時最核心的部分包括:負載均衡算法、會話模式的選擇、應用層會話保持機制和健康檢測方法的設置。下面介紹在實施大型在線考試系統所采用的技術策略。

2.1 ?基本工作原理

基本原理如圖1所示,運行相同應用的多臺服務器組成一個服務器集群,用一個VIP(Virtural IP)即實際IP來代表此服務器集群的IP,該地址也是客戶端訪問此服務的IP。當客戶端向服務器發送請求時,負載均衡系統將根據各服務器的會話狀態的情況、預先設置的負載均衡策略以及健康檢測結果等參數來把客戶端請求轉發到合適的服務器上,最后由負載均衡系統把服務器的響應轉發回給請求服務的客戶端。

2.2 ?負載均衡策略

在負載均衡系統中,負載均衡策略將客戶端請求分配到服務器集群中最合適的服務器上,通常負均衡器都支持相當豐富的負載均衡策略,主要包括:輪詢和權重輪詢 、最少連接數、最小反應時間、哈希法等。而在線考試系統采用最小連接數策略是最合適的,因為在線考試系統實際上就是一個Web服務,服務器性能主要受請求的客戶端數量影響。在大型在線考試系統的負載均衡技術方案中,把負載均衡器的健康檢測方法設置為HTTP頁面,HTTP頁面檢查的是一個來至于后臺數據庫的動態頁面。這樣通過HTTP頁面的健康檢測方法同時檢測了Web服務和后臺數據庫服務的可用性。然而,HTTP頁面檢測將會對服務器資源造成額外的消耗,對Web服務的性能是較大的考驗,考慮到大型在線考試系統應用的特點,最小連接數加HTTP頁面健康檢測的方案仍有許多不足,因此設計了一款新算法,該算法從響應客戶端請求需要消耗服務器系統資源程度著手來實現系統的負載均衡。以下稱該算法為TEST算法。

負載均衡器的實現負載平衡首先需要獲得服務器集群中各臺服務器的負載能力的信息,包括服務器CPU、內存的利用率和網絡帶寬占用率,根據預先設置好的算法計算得出的服務器權值并提供給負載均衡器。負載均衡器根據設定的周期獲取服務器的負載能力的信息,但是請求的到達時間是不固定的,若負載均衡器更新負載能力信息不及時,可能會導致單個節點處理負載的實際情況超過其處理能力[3]。所以,引入一個新的負載能力值指標——負載冗余參數 L,利用這個參數來衡量在某時刻某服務器的負載均衡能力[4]。

2.3 ?改進的負載均衡TEST算法的描述

服務器的負載能力的計算主要包括CPU占用率、內存的利用率、網絡帶寬占用率三個參數。當負載均衡器收到這三個參數后,計算每臺服務器的負載值Load(Si),并參考每臺服務器的最大負載能力C(Si),計算每臺服務器的當前負載比例值P(Si),負載比例值越大,說明服務器剩余的處理能力越小,因此當有新的客戶端請求到達時,優先分配到負載比例值小的服務器。同時還為為負載比例值設定一個閾值,如90%,當負載比例值達到90%時,該服務器被認定為過載,用戶請求不再分配到該服務器,同時為上述3個關鍵參數各設定一個獨立的單項閾值,如果每臺服務器上述3個關鍵參數中的任意一項參數值超過其單項閾值,用戶請求將不再給這個服務器[6]。

(1)計算每臺服務器最大負載能力:假設服務器集群為S={S0,S1,…,Sn–1},Si為集群中第i個服務器節點。R(Si)為集群中第i臺服務器的最大負載均衡能力值,Ki為各服務器性能指標的比重系數, = 1。其中RCPU表示CPU頻率,Rm表示內存總量,Rnet表示網絡帶寬占用率,則R(Si)的計算公式為:

R(Si)= k1*RCPU(Si)+k2*Rm(Si)+k3*Rnet(Si)(1)

F(Si)為服務器當前的負載能力值,qi為各負載能力指標的比重系數, = 1。其中 FCPU表示CPU 利用率,Fm表示內存使用率,Fnet表示網絡帶寬,則F(Si)的計算公式為:

F(Si)= q1*FCPU(Si)+ q2*Fm(Si)+q3*Fnet(Si) (2)

(2)CPU利用率FCPU(Si)和內存使用率Fm(Si)的計算

可以從/proc/stat文件中讀取的值計算得出FCPU(Si)。獲取得到的值包括:用戶占用CPU的時間、系統內核占用時間和空閑進程占用時間,可通過空閑進程占用時間可以計算出CPU的未利用率,進而計算得出CPU的使用率,再設定兩個時刻t1和t2,用Ii表示ti時刻的空閑進程,Ci表示ti時刻的CPU[3]。

2.4 ?算法的實現過程

首先負載均衡算法需要獲取兩個參數:一是服務器權值,二是最小負載冗余值,接著負載均衡器與服務器建立連接并監聽服務器端口,再調用recvfrom()方法接收服務器發送回來的數據,根據集群中各個服務器的性能和負載能力,計算得出服務器權值和負載冗余值[5]。最后對服務器權值進行周期性更新只有,遍歷獲取服務器集群中的每臺服務器的負載冗余值,在滿足服務器的負載冗余值滿足L(Si)>Lmin前提下,服務器的當前的權值和負載冗余值高的優先分配客戶端請求。

2.5 ?TEST算法仿真實驗

為了驗證負載均衡改進算法—TEST算法的優越性,將最少連接數算法和TEST算法進行對比,以同樣數量的客戶端請求服務器集群的響應時間作為衡量標準。使用Load Runner作為測試工具。測試時,保證兩個模擬客戶端在單位時間里發送同樣次數的請求。由8臺服務器組成的服務器集群來處理請求。在服務器集群中分別使用最少連接數算法和TEST算法來響應同樣數量的客戶端請求,將收到服務器集群反應的時間記錄并進行對比。測試結果如表1和圖2所示。

由實驗測試結果可以分析得出,在客戶端請求數還未明顯增加的情況下,NAT負載均衡方案和TEST算法的處理請求的響應時間是幾乎相等的。隨著客戶端請求連接數量的增加,達到8000以上時,TEST算法的平均響應效率較NAT負載均衡方案中的最小連接數算法有明顯的提高。

3 ?結束語

負載均衡系統實施方案的設計對工程師的知識面和經驗要求比較高,要想針對大型在線考試系統應用設計出優秀的的負載均衡系統方案,通常需要軟硬件、操作系統、網絡技術、算法等多個方面的技能及相關的經驗積累。通過結合大型在線考試系統的實際使用,分析了負載均衡在負載均衡策略和健康測試模塊這兩個方面的相關設置,并提出了一種適合大型在線考試系統實際應用的負載均衡算法,負載均衡算法是決定負載均衡系統成敗的關鍵因素,優秀的均衡算法能充分發揮服務器集群的優勢,充分利用集群的各種資源,為用戶提供高質量的服務[6]。通過分析常用負載均衡算法的優缺點,提出了TEST負載均衡算法,該算法的主要特點是: 充分應用節點CPU占用率、內存的利用率、網絡帶寬占用率三個因素,指導任務的分配,通過負載修正保證系統的穩定性。通過實驗可以發現,Test算法能顯著地提高負載均衡效率,從而提高在線考試系統的穩定性。當然,提出的算法也存在不足,例如三個參數的獲取給系統帶來了額外的開銷,使得服務端的請求有一定的延滯。另外,負載均衡系統的效率雖然有了一定的提高,但考試系統實際應用中還有實驗中沒有考慮周到的影響因素。在今后的實驗中,將不斷完善節點負載的分配和修正機制并綜合考慮考試過程中的各種影響因素,進一步提高算法的均衡效率。另外,希望對大家部署在線考試系統和其他高并發系統時有所借鑒。

參考文獻

[1] 劉同. 負載均衡技術在數據庫集群系統中的應用與實現[D]. 國防科學技術大學, 2009.

[2] 丁逸. 基于層次策略的動態負載均衡算法研究[D]. 東南大學, 2005.

[3] 梁家君. 基于神經網絡改進粒子群優化算法的負載均衡技術優化研究[D]. 廣東工業大學, 2018.

[4] 楊明極, 王鶴, 趙加鳳. 基于CPU和內存利用率的負載均衡算法的研究[J]. 科技通報, 2016, 32(04): 160-164.

[5] 朱莉, 沈未名, 李銳, 徐勝勇. 利用遺傳算法的網絡GIS集群服務器動態負載均衡算法[J]. 武漢大學學報(信息科學版), 2011, 36(06): 721-725.

[6] 莊旻軒. 服務器集群中基于動態反饋的負載均衡算法[D]. 大連理工大學, 2014.

[7] 唐俊武, 南理勇, 左強. 在線考試系統開發中的幾個問題及解決方法[J]. 計算機與數字工程, 2005(08): 144-147.

[8] 王春娟, 董麗麗, 賈麗. Web集群系統的負載均衡算法[J]. 計算機工程, 2010(02): 108-110.

[9] 徐敏, 李明, 鄭建忠, 等. 基于OpenStack的Swift負載均衡算法[10]. 計算機系統應用, 2018, 27(01): 127-131.

[10] 孫凌宇, 等. 云平臺環境下基于禁忌搜索的負載均衡任務調度優化算法[J]. 小型微型計算機系統, 2015, 36 (09): 1948-1952.

[11] 蔡嵩, 等. 云平臺環境中基于樸素貝葉斯算法的負載均衡技術[J]. 計算機應用, 2014, 34(2): 360-364.

[12] 尚永強. 計算機網絡信息安全中數據加密技術的探討[J]. 軟件, 2018, 39(12): 198-201.

[13] 劉文. 基于大數據優化網絡的安全性策略的研究[J]. 軟件, 2018, 39(9): 205-208.

[14] 黃超, 唐子蛟. 基于云計算技術的智慧校園平臺建設研究[J]. 軟件, 2018, 39(5): 27-30.

[15] 吳亞熙, 岑峰. 基于卷積神經網絡的多層級目標檢測方法[J]. 軟件, 2018, 39(4): 164-169.

[16] 孫哲, 巫中正, 李千目. 基于網絡流量的安全可達性推理方法[J]. 軟件, 2018, 39(4): 36-43.

[17] 李潔, 何軍. 云計算操作系統網絡虛擬化模塊Neutron 分析研究[J]. 軟件, 2016, 37(01): 21-23.

猜你喜歡
在線考試負載均衡算法
基于MapReduce的改進Eclat算法
Travellng thg World Full—time for Rree
進位加法的兩種算法
異構環境下改進的LATE調度算法
大學物理在線考試與分析系統
效率觀下高校課程考試形式的改革探索
一種改進的整周模糊度去相關算法
大數據背景下在線評教與在線考試融合的思路探討
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合