張 卓,張 上+,項天旭,李夢思
(1.三峽大學(xué) 湖北省建筑質(zhì)量檢測裝備工程技術(shù)研究中心,湖北 宜昌 443002;2.三峽大學(xué) 計算機(jī)與信息學(xué)院,湖北 宜昌 443002)
近年來微服務(wù)憑借靈活的服務(wù)支持和優(yōu)秀的組織架構(gòu)得到了國內(nèi)外企業(yè)的廣泛青睞[1]。所謂的微服務(wù),是指將大型分布式系統(tǒng)按照不同的業(yè)務(wù)與功能解耦成若干微服務(wù),分別提供對應(yīng)業(yè)務(wù)處理功能,每個微服務(wù)相當(dāng)于一個獨(dú)立的小型服務(wù)系統(tǒng)。系統(tǒng)服務(wù)功能的單一性可以更加靈活地應(yīng)用流量限制技術(shù)和負(fù)載均衡算法使系統(tǒng)更好應(yīng)對高并發(fā)場景,保證系統(tǒng)的可靠性和高效性[2-4]。微服務(wù)作為當(dāng)前新興的分布式架構(gòu),帶來便捷高效的同時也對分布式系統(tǒng)中負(fù)載均衡的問題提出了更高的要求[5]。
為了在分布式系統(tǒng)中實現(xiàn)更優(yōu)秀的負(fù)載均衡效果,本文基于當(dāng)前主流的加權(quán)最小連接數(shù)算法[6],提出一種基于改進(jìn)逼近理想及排序(technique for order preference by similarity to an ideal solution,TOPSIS)模型動態(tài)確定權(quán)重進(jìn)行負(fù)載分發(fā)的算法,對用戶請求進(jìn)行動態(tài)調(diào)度,充分利用服務(wù)器資源。所提算法的創(chuàng)新點(diǎn)總結(jié)如下:
(1)考慮集群系統(tǒng)負(fù)載狀況的實時性,引入動態(tài)權(quán)重,將后端服務(wù)器作為評價對象,實時負(fù)載信息作為評價指標(biāo),建立計算模型將評價結(jié)果作為依據(jù)匹配出最優(yōu)對象處理請求,得到最佳分配方案。
(2)針對所提負(fù)載均衡方案的權(quán)重分配時效問題,提出一種最少上報策略,后端服務(wù)器發(fā)送權(quán)重信息時對比判斷權(quán)重變化率,判斷是否發(fā)送自身權(quán)重,優(yōu)化負(fù)載均衡器與節(jié)點(diǎn)交互所占用資源。
(3)所提算法將網(wǎng)絡(luò)服務(wù)請求的均衡問題建模為一個分配優(yōu)化問題,利用改進(jìn)TOPSIS模型求解該問題,充分利用集群系統(tǒng)資源,降低系統(tǒng)響應(yīng)時間,提升吞吐量。
目前負(fù)載均衡技術(shù)的研究主要分為:軟件負(fù)載均衡[7]和硬件負(fù)載均衡[8]。硬件負(fù)載均衡器處理網(wǎng)絡(luò)請求能力與負(fù)載性強(qiáng),負(fù)載均衡策略多樣化。但成本過高,配置冗余且無法有效監(jiān)控服務(wù)器使用狀態(tài)。軟件負(fù)載均衡器的成本低且可擴(kuò)展性強(qiáng),配置簡單,使用靈活,可以改進(jìn)負(fù)載均衡算法來提高系統(tǒng)的負(fù)載分發(fā)能力。目前國內(nèi)許多學(xué)者外對負(fù)載均衡算法進(jìn)行了研究與改進(jìn),比如文獻(xiàn)[9]采用粒子群優(yōu)化算法分配任務(wù),解決有效任務(wù)調(diào)度問題;利用動態(tài)分組方式提交任務(wù)并結(jié)合資源使用狀態(tài),收集到分組的結(jié)果后,將集群的所有結(jié)果合并到一個分配圖,最后引入粒子群優(yōu)化算法調(diào)整負(fù)載方案。該方案具有優(yōu)秀的負(fù)載平衡性。文獻(xiàn)[10]提出了一種基于Nginx負(fù)載均衡的動態(tài)分配算法,該算法根據(jù)后端服務(wù)器的負(fù)載性能指標(biāo)和處理請求的平均響應(yīng)時間,通過改進(jìn)熵值法等算法動態(tài)地設(shè)置輪詢權(quán)重,并且對Nginx內(nèi)部模塊進(jìn)行改進(jìn),通過測試平均響應(yīng)時間和最高并發(fā)量,得到了比Nginx內(nèi)置算法更優(yōu)的結(jié)論。文獻(xiàn)[11]提出一種基于云中心虛擬機(jī)布局的多資源負(fù)載優(yōu)化算法,該算法減少資源碎片且限制虛擬機(jī)空余服務(wù)率,平衡各資源的使用,防止節(jié)點(diǎn)性能浪費(fèi)。但該算法存在節(jié)點(diǎn)資源利用率低的問題。文獻(xiàn)[12]提出一種動靜融合的負(fù)載均衡算法,針對服務(wù)器硬件配置和運(yùn)行時負(fù)載狀態(tài)變化設(shè)計靜態(tài)權(quán)重與動態(tài)權(quán)重。該算法能夠?qū)崟r調(diào)整服務(wù)器權(quán)重,但沒有考慮后端服務(wù)器的權(quán)重上報策略,節(jié)點(diǎn)資源利用率還有進(jìn)一步提升的空間。文獻(xiàn)[13]提出一種動態(tài)加權(quán)輪詢算法,引入多負(fù)載指標(biāo)層次分析法確定各性能指標(biāo)對服務(wù)器負(fù)載的影響程度,實現(xiàn)動態(tài)負(fù)載均衡的算法。該算法判斷服務(wù)器負(fù)載指標(biāo)較全面,但是采用層次分析法主觀意識過大,通用性不強(qiáng)。
目前主流的軟件負(fù)載均衡器有Nginx、HAProxy[14]、Ribbon[15]和LVS[16]等。Nginx是一款輕量級高性能的Web服務(wù)器,其熱部署、代碼開源且可擴(kuò)展性強(qiáng),目前國內(nèi)外眾多企業(yè)系統(tǒng)架構(gòu)用其作為代理服務(wù)器。本文采用Nginx作為集群系統(tǒng)軟件負(fù)載均衡器,研究基于Nginx的動態(tài)權(quán)重負(fù)載均衡算法。
常用負(fù)載均衡算法分析見表1,目前Nginx負(fù)載均衡算法研究中分為靜態(tài)和動態(tài)兩大類型。前者是在集群系統(tǒng)初始化之前配置負(fù)載均衡策略,以固定方式分配請求,配置簡單,在并發(fā)量較小時能發(fā)揮出優(yōu)秀的效果,也可以解決Session等問題。但是當(dāng)并發(fā)量過大且各類請求資源消耗相差較大時,會導(dǎo)致整個集群系統(tǒng)節(jié)點(diǎn)負(fù)載差異較大,平均請求響應(yīng)時間延長,甚至導(dǎo)致節(jié)點(diǎn)宕機(jī)。后者能夠?qū)崟r的與后端服務(wù)器進(jìn)行信息交互,根據(jù)服務(wù)器反饋的負(fù)載信息調(diào)整合適的負(fù)載策略,對比靜態(tài)算法能夠更加合理的將請求分發(fā)到各個后端服務(wù)器,但是由于負(fù)載均衡器頻繁的收集后臺節(jié)點(diǎn)負(fù)載信息,會增大集群系統(tǒng)的資源開銷,導(dǎo)致平均請求響應(yīng)時間增加,整個集群性能下降。
表1 常用負(fù)載均衡算法分析
針對于上述問題,本文提出一種能夠根據(jù)后端服務(wù)器實時負(fù)載信息調(diào)整權(quán)重,彌補(bǔ)了靜態(tài)負(fù)載均衡算法不能根據(jù)集群系統(tǒng)實時負(fù)載情況進(jìn)行策略調(diào)整問題的負(fù)載均衡策略,并且優(yōu)化后端服務(wù)器與負(fù)載均衡器之間的交互資源消耗和平均響應(yīng)時間,同時提高了集群系統(tǒng)吞吐量。
本節(jié)設(shè)計的負(fù)載均衡器系統(tǒng)模型如圖1所示。負(fù)載信息收集模塊與負(fù)載信息計算模塊部署在集群的每臺后端服務(wù)器上,負(fù)載均衡算法實現(xiàn)模塊部署在Nginx主機(jī)。
圖1 系統(tǒng)結(jié)構(gòu)
負(fù)載信息收集模塊周期T收集并計算后端服務(wù)器proc文件夾中CPU利用率(R_cpu)、內(nèi)存利用率(R_mem)、網(wǎng)絡(luò)利用率(R_net)、IO利用率(R_io)性能指標(biāo),使用Redis[17]數(shù)據(jù)庫作為全局?jǐn)?shù)據(jù)區(qū)域共享給負(fù)載信息計算模塊,負(fù)載信息收集模塊流程如圖2所示。
圖2 負(fù)載信息收集模塊流程
負(fù)載信息計算模塊主要是解決權(quán)重計算的相關(guān)問題,主要實現(xiàn)如下兩個功能,負(fù)載信息計算模塊流程如圖3所示。
圖3 負(fù)載信息計算模塊流程
(1)該模塊周期T在全局?jǐn)?shù)據(jù)區(qū)域Redis中獲取所有后端服務(wù)器負(fù)載信息,建立本文設(shè)計的改進(jìn)TOPSIS模型計算后端服務(wù)器綜合權(quán)重。權(quán)重信息反映了該服務(wù)器當(dāng)前負(fù)載狀態(tài)。
(2)該模塊以HTTP請求中Post方法周期T發(fā)送權(quán)重JSON信息到負(fù)載均衡算法實現(xiàn)模塊,確保在下一個周期T內(nèi),權(quán)重最大的后端服務(wù)器能夠獲得更多的服務(wù)請求。該模塊每隔周期T檢測所得的權(quán)重大小,若新權(quán)重與上一次計算所得權(quán)重超過權(quán)重變化率Δt,則將新權(quán)重發(fā)送至負(fù)載均衡器。反之則不發(fā)送,只是將權(quán)重信息存儲到Redis中,繼續(xù)沿用上一次接收的權(quán)重信息。主動方式發(fā)送權(quán)重信息可以減少由于集群系統(tǒng)頻繁發(fā)送數(shù)據(jù)而占用網(wǎng)絡(luò)資源。由于周期T和權(quán)重變化率Δt在實際的應(yīng)用場合都有所不同,本文通過Apache JMeter[18]壓測后得出周期T與權(quán)重變化率Δt。
負(fù)載均衡算法實現(xiàn)模塊包括Nginx和注冊中心Consul[19]。Nginx的Upsync[20]模塊周期T從Consul中的K/V服務(wù)中取出后端服務(wù)器列表和權(quán)重信息,并根據(jù)改寫的Nginx的Upstream[21]模塊使加權(quán)最小連接數(shù)算法的靜態(tài)權(quán)重變更為動態(tài)權(quán)重,為后端服務(wù)器動態(tài)調(diào)整權(quán)重,負(fù)載均衡算法實現(xiàn)模塊流程如圖4所示。
圖4 負(fù)載均衡算法實現(xiàn)模塊流程
TOPSIS是一種逼近理想解及排序算法,主要應(yīng)用在多目標(biāo)決策分析[22]。基本原理是通過歸一化后的數(shù)據(jù)建立規(guī)范化矩陣,找出其多個目標(biāo)集合中最劣目標(biāo)對象(反理想解)和最優(yōu)目標(biāo)對象(正理想解),計算評價目標(biāo)集合各數(shù)據(jù)與最劣目標(biāo)對象和最優(yōu)目標(biāo)對象的歐式距離,獲得各評價目標(biāo)對象與最優(yōu)目標(biāo)對象的貼近度作為理想貼近度,按理想解貼近度的值進(jìn)行排序作為評價目標(biāo)對象優(yōu)劣的依據(jù)。理想貼近度設(shè)計取值在0和1之間,該值越接近1,則相應(yīng)的目標(biāo)對象越接近最優(yōu)水平,反之,越接近0,則相應(yīng)的目標(biāo)對象越接近最劣水平。
在本文設(shè)計的算法中,將后端服務(wù)器的負(fù)載信息采集模塊收集的CPU利用率(R_cpu)、內(nèi)存利用率(R_mem)、網(wǎng)絡(luò)利用率(R_net)、IO利用率(R_io)作為評價目標(biāo),根據(jù)TOPSIS建模計算出理想貼近度作為權(quán)重發(fā)送給負(fù)載均衡器,故算法的權(quán)重取值范圍在0和1之間。負(fù)載均衡器根據(jù)各后端服務(wù)器的權(quán)重,選擇出最優(yōu)的后端服務(wù)器響應(yīng)處理用戶請求。本文定義用Li來表示各個后端服務(wù)器的權(quán)重,下標(biāo)i(i=1,2,3,…,n) 表示第i臺后端服務(wù)器,Ri_cpu,Ri_mem,Ri_net,Ri_io分別代表第i臺后端服務(wù)器的CPU利用率、內(nèi)存利用率、網(wǎng)絡(luò)利用率和IO利用率。
根據(jù)上文構(gòu)建的后端服務(wù)器指標(biāo)體系,建立本文算法TOPSIS模型的具體步驟與公式如下:
(1)為了消除負(fù)載信息指標(biāo)之間量綱的影響,需要對負(fù)載信息指標(biāo)進(jìn)行標(biāo)準(zhǔn)化處理。建立負(fù)載信息指標(biāo)的正向化矩陣R,rij為第i臺后端服務(wù)器的第j個評價指標(biāo)
(1)
(2)對其標(biāo)準(zhǔn)化的矩陣記為Z,Z中的每一個元素為
(2)
(3)由式(2)可得標(biāo)準(zhǔn)化負(fù)載信息指標(biāo)矩陣Z
(3)
(4)定義各項負(fù)載信息評價指標(biāo)最大值集合Z+
(4)
(5)定義負(fù)載信息各項評價指標(biāo)最小值集合Z-
(5)
(6)定義第i(i=1,2,3,…,n) 臺后端服務(wù)器各項負(fù)載信息評價指標(biāo)與其對應(yīng)評價指標(biāo)最大值的歐式距離
(6)
(7)定義第i(i=1,2,3,…,n) 臺后端服務(wù)器各項負(fù)載信息評價指標(biāo)與其對應(yīng)評價指標(biāo)最小值的歐式距離
(7)
(8)由式(6)和式(7)綜合計算得出第i(i=1,2,3,…,n) 臺后端服務(wù)器的理想貼近度作為權(quán)重
(8)
上述設(shè)計TOPSIS模型雖然可以計算出各個后端服務(wù)器的權(quán)重,但是該模型略顯片面性,因為缺少不同性能指標(biāo)之間的比較。雖然層次分析等方法可以確定不同性能指標(biāo)權(quán)重,但是其需要對指標(biāo)間的關(guān)系進(jìn)行刨析且其主觀意識過大。本文采取相對客觀的熵值賦權(quán)法[23]計算性能指標(biāo)權(quán)重并結(jié)合TOPSIS模型計算出后端服務(wù)器的最終權(quán)重。
由于各項性能指標(biāo)在計量單位上的不統(tǒng)一,故對這4項指標(biāo)進(jìn)行綜合計算前需要各項指標(biāo)進(jìn)行數(shù)據(jù)處理,以此來解決數(shù)據(jù)差異性問題,此步驟已在式(1)~式(3)中完成,可以直接用以計算。負(fù)載性能指標(biāo)綜合計算步驟如下:
(1)計算第j項負(fù)載信息指標(biāo)下的第i臺后端服務(wù)器占該指標(biāo)總和比例
(9)
(2)計算第j項負(fù)載信息評價指標(biāo)的熵值
(10)
其中,ln為自然對數(shù),ej>0,k>0。
(3)計算第j項負(fù)載信息評價指標(biāo)的信息效用值
dj=1-ej
(11)
(4)計算第j項負(fù)載信息評價指標(biāo)的權(quán)重
(12)
基于式(12)可以改進(jìn)式(6)與式(7),為不同的負(fù)載信息指標(biāo)設(shè)置不同的權(quán)重,可以得到如下公式
(13)
(14)
負(fù)載信息計算模塊周期T的長短會直接影響本文算法負(fù)載均衡效果。如果周期T選取過短,則負(fù)載信息計算模塊頻繁的發(fā)送權(quán)重信息會給負(fù)載均衡器帶來過多的資源開銷。如果周期T選取過長,負(fù)載均衡器不能實時的更新各后端服務(wù)器的權(quán)重,負(fù)載均衡的效果會受到影響。
本文引入權(quán)重變化率Δt并設(shè)計最少上報策略解決權(quán)重上報周期問題。該策略使各后端服務(wù)器在周期T內(nèi)的權(quán)重變化幅度與預(yù)先壓測出的權(quán)重變化率Δt相比較,當(dāng)權(quán)重變化率大于Δt時,將新權(quán)重發(fā)送至負(fù)載均衡器,當(dāng)小于Δt值時,只在Redis中修改保存當(dāng)前的權(quán)重信息。如果負(fù)載均衡器在周期T內(nèi)沒有收到后端服務(wù)器提交的權(quán)重信息,則按照上一周期T接收的該后端服務(wù)器的權(quán)重信息進(jìn)行負(fù)載分發(fā)。權(quán)重變化率Δt計算公式如下所示
(15)
其中,Li(t1) 表示后端服務(wù)器i在t1時刻的權(quán)重,Li(t2) 表示該后端服務(wù)器i在t2時刻的權(quán)重,Δt表示該后端服務(wù)器在一個周期T內(nèi)的權(quán)重變化率,且t2>t1。
本節(jié)實驗拓?fù)浼軜?gòu)包括一臺客戶端服務(wù)器和負(fù)載均衡器和3臺后端服務(wù)器組建模擬基于微服務(wù)架構(gòu)的后端服務(wù)器集群系統(tǒng)。
實驗架構(gòu)如圖5所示,其中客戶端中安裝了Apache JMeter測壓工具,可以模擬大量并發(fā)請求,實驗環(huán)境配置見表2。通過Apache JMeter模擬多個客戶端對集群系統(tǒng)進(jìn)行并發(fā)訪問來測試負(fù)載均衡器的負(fù)載能力,根據(jù)吞吐量和平均響應(yīng)時間兩個方面的指標(biāo)與其它主流負(fù)載均衡算法的對比情況來檢驗本文算法的效果。
表2 實驗環(huán)境配置
在第3章對算法的分析中可知周期T是一個待定的參數(shù)。故先對周期T進(jìn)行測試選值,測試從4 s開始,11 s結(jié)束,每隔1 s測試一次,共選取10個時間節(jié)點(diǎn),使用Apache JMeter生成10組數(shù)據(jù)請求。每組用戶請求并發(fā)數(shù)為1100和1300,取10次實驗結(jié)果的平均值。評價標(biāo)準(zhǔn)為請求返回的響應(yīng)時間,響應(yīng)時間越短,說明服務(wù)器對用戶的請求處理越快,集群性能也越好。
平均響應(yīng)時間與周期T如圖6所示,在4 s到6 s階段,由于在周期較短且處于高并發(fā)場景,負(fù)載均衡器過于頻繁的獲取后端服務(wù)器權(quán)重信息,大量占用了集群資源開銷,平均響應(yīng)時間逐步下降。在6 s到11 s階段,由于負(fù)載均衡器獲取負(fù)載信息周期過長,對后端服務(wù)器權(quán)重調(diào)整不夠及時,平均響應(yīng)時間逐步升高。當(dāng)周期T等于6 s時集群的性能最好,故本文實驗選取周期T為6 s。
圖6 平均響應(yīng)時間與周期T關(guān)系
選出合適的周期T后,在該周期下分別選取權(quán)重變化率Δt為0.07,0.08,0.09,0.10,0.11,0.12,測試條件和評價標(biāo)準(zhǔn)與測試周期T時相同,同樣取10組測試結(jié)果的平均值。平均響應(yīng)時間與權(quán)重變化率如圖7所示,從測試結(jié)果可以得到,當(dāng)Δt為0.09時平均響應(yīng)時間最短,故本文實驗選取Δt值為0.09。
圖7 平均響應(yīng)時間與權(quán)重變化率關(guān)系
為了測試本文動態(tài)權(quán)重負(fù)載均衡算法合理分配資源的效果,使用Apache JMeter對整個集群系統(tǒng)性能進(jìn)行測試。主要測試內(nèi)容為:在不同的并發(fā)數(shù)下,分別對加權(quán)最小連接數(shù)算法(weighted least-connection scheduling,least-con)、加權(quán)輪詢算法(weight round robin,WRR)和本文提出算法的平均響應(yīng)時間、吞吐量進(jìn)行對比測試。實驗進(jìn)行10次,并對實驗記錄數(shù)據(jù)取平均值,得到各算法的平均響應(yīng)時間與吞吐量的對比圖。
平均響應(yīng)時間與并發(fā)數(shù)關(guān)系如圖8所示,整體可見3種算法的平均響應(yīng)時間都在隨著并發(fā)量的增加而提升。在并發(fā)量為500以下時,3種不同算法的平均響應(yīng)時間旗鼓相當(dāng)并沒有明顯的差距。因為此時并發(fā)量較小,集群系統(tǒng)處于低負(fù)荷狀態(tài)各后端服務(wù)器均有能力來處理請求,動態(tài)負(fù)載均衡算法根據(jù)后端服務(wù)器運(yùn)行狀態(tài)進(jìn)行負(fù)載分發(fā)的優(yōu)勢并不能體現(xiàn)出來,所以在集群系統(tǒng)并發(fā)量小的場景下更加推薦使用靜態(tài)負(fù)載均衡算法,配置簡單且能節(jié)約網(wǎng)絡(luò)資源。當(dāng)并發(fā)量超過500后,此時集群系統(tǒng)已經(jīng)進(jìn)入中負(fù)荷狀態(tài),3種算法的平均響應(yīng)時間都有大幅度增加的趨勢,但least-con算法對比其它兩種算法平均響應(yīng)時間稍低,因為該算法可以根據(jù)事先配置好的后端服務(wù)器權(quán)重,并結(jié)合選擇擁有最小連接數(shù)的后端服務(wù)器進(jìn)行請求轉(zhuǎn)發(fā),而靜態(tài)算法由于不能根據(jù)各后端服務(wù)器實時負(fù)載信息進(jìn)行調(diào)整,故平均響應(yīng)時間略高,本文算法由于會周期T獲取所有后端服務(wù)器詳細(xì)負(fù)載信息,所以平均響應(yīng)時間稍高于least-con算法??傮w來說3種算法負(fù)載分發(fā)能力勢均力敵,能滿足基本負(fù)載分發(fā)要求。但是當(dāng)并發(fā)量超過900后,集群系統(tǒng)進(jìn)入高負(fù)載狀態(tài),由于本文設(shè)計算法可以根據(jù)后端服務(wù)器負(fù)載情況動態(tài)更新自身權(quán)重,在集群高負(fù)荷狀態(tài)下能夠選出最佳的后端服務(wù)器進(jìn)行請求轉(zhuǎn)發(fā),充分利用集群資源,優(yōu)勢逐漸顯現(xiàn)出來,平均響應(yīng)時間與WRR算法和least-con算法拉開距離。在并發(fā)數(shù)處于較高的1500時,本文動態(tài)權(quán)重負(fù)載均衡算法平均響應(yīng)時間比least-con降低了15%,比WRR算法降低了13.1%。
圖8 平均響應(yīng)時間與并發(fā)數(shù)關(guān)系
吞吐量與并發(fā)數(shù)關(guān)系如圖9所示,在并發(fā)量達(dá)到500之前,集群系統(tǒng)處于低負(fù)荷狀態(tài),3種算法的吞吐量都隨著并發(fā)量的增加而增加,且比較穩(wěn)定,說明3種算法在并發(fā)量較小的場景下都可以合理的完成負(fù)載分發(fā)。在并發(fā)量達(dá)到500之后,集群系統(tǒng)處于中負(fù)荷狀態(tài),本文算法與least-con算法吞吐量高于WRR算法,靜態(tài)負(fù)載均衡算法的缺陷開始顯露,由于不能動態(tài)調(diào)整各后端服務(wù)器權(quán)重進(jìn)行負(fù)載分發(fā),導(dǎo)致并發(fā)連接數(shù)出現(xiàn)丟失的情況,吞吐量低于動態(tài)負(fù)載均衡算法。并發(fā)數(shù)達(dá)到900之后,集群系統(tǒng)處于高負(fù)荷狀態(tài),3種算法吞吐量均開始大幅度下降,由于本文算法與least-con算法為動態(tài)負(fù)載均衡算法能夠?qū)崟r調(diào)整負(fù)載分發(fā)對象,所以并發(fā)量基本持平吞吐量,能夠做到請求并發(fā)量基本持平于實際并發(fā)量,WRR算法由于在配置中固定的負(fù)載轉(zhuǎn)發(fā)對象權(quán)重,所以在高并發(fā)下吞吐量大幅下降。并發(fā)量為1200時,集群系統(tǒng)處于中超高負(fù)荷狀態(tài),3種算法的吞吐量都大幅下降,但本文算法在超高并發(fā)下能夠根據(jù)整個集群系統(tǒng)狀態(tài)實時更新權(quán)重信息選擇出最佳的后端服務(wù)器進(jìn)行請求轉(zhuǎn)發(fā),所以本文算法減少的幅度較為穩(wěn)定且高于least-con算法與WRR算法。本文算法吞吐量比least-con算法高21 %,比WRR算法高24.9%;并發(fā)量為較高的1500時,本文算法吞吐量比least-con算法高9%,比WRR算法高18.9%。從實驗結(jié)果整體來看,在并發(fā)量超過950之后,3種算法的吞吐量都隨并發(fā)量的增加有大幅度的減少,但是,表明本文算法對比這兩種主流算法能夠更加合理利用服務(wù)器資源。
圖9 吞吐量與并發(fā)數(shù)關(guān)系
實驗結(jié)果表明,本文提出的基于改進(jìn)TOPSIS的動態(tài)權(quán)重負(fù)載均衡算法在高并發(fā)場景下對比其它兩種主流算法能更加有效合理進(jìn)行負(fù)載分發(fā),減少集群系統(tǒng)平均響應(yīng)時間,使整個集群系統(tǒng)性能得到了提升。
負(fù)載均衡算法是大型分布式系統(tǒng)的關(guān)鍵研究問題。本文針對當(dāng)前流行的微服務(wù)架構(gòu)下后端服務(wù)器集群負(fù)載失衡的問題,引入動態(tài)權(quán)重概念,將后端服務(wù)器當(dāng)前剩余負(fù)載性能抽象為權(quán)重,設(shè)計了一種實時反饋調(diào)整權(quán)重的動態(tài)負(fù)載均衡算法。在并發(fā)數(shù)較高情況下,本算法相較于其它常見主流負(fù)載均衡算法能夠以動態(tài)權(quán)重為依據(jù)合理分配請求到后端服務(wù)器節(jié)點(diǎn),大幅度提升了集群系統(tǒng)的性能。
所提算法設(shè)計的負(fù)載均衡器為單體架構(gòu),所有請求都由負(fù)載均衡器進(jìn)行處理轉(zhuǎn)發(fā),在超高并發(fā)下存在宕機(jī)隱患。接下來將研究負(fù)載均衡器的服務(wù)流控技術(shù),并且全面結(jié)合關(guān)鍵請求調(diào)度,異常處理、流量限制算法等,從而實現(xiàn)資源利用率的最大化以及集群的高可用性。