吳俊鵬,劉曉東
(1.武漢郵電科學(xué)研究院,湖北武漢 430070;2.武漢虹旭信息技術(shù)有限責(zé)任公司,湖北武漢 430070)
服務(wù)器集群可以通過負(fù)載均衡算法將任務(wù)分配到集群的各服務(wù)器中,從而獲得很高的計(jì)算速度[1]。傳統(tǒng)的負(fù)載均衡算法中通常將服務(wù)器各項(xiàng)性能指標(biāo)權(quán)重與服務(wù)器加權(quán)值設(shè)為定值[2-3],然而在不同時(shí)刻各性能指標(biāo)對服務(wù)器性能的影響力度都在變化,導(dǎo)致對服務(wù)器當(dāng)前狀態(tài)造成誤判。為了解決上述問題,需合理利用負(fù)載資源,文中提出了一種按周期動(dòng)態(tài)更新服務(wù)器各項(xiàng)性能指標(biāo)權(quán)重與服務(wù)器加權(quán)值的算法,經(jīng)實(shí)驗(yàn)驗(yàn)證,該算法可以更好地實(shí)現(xiàn)服務(wù)器集群的負(fù)載均衡。
負(fù)載均衡就是將工作負(fù)載分配到多個(gè)服務(wù)器上進(jìn)行處理,從而避免部分服務(wù)器壓力過大,其在高并發(fā)與高可用的網(wǎng)絡(luò)基礎(chǔ)架構(gòu)中扮演著重要的角色[4-6]。通過使用負(fù)載均衡可以提高集群處理任務(wù)的能力。
常見的負(fù)載均衡算法包括隨機(jī)法、輪詢調(diào)度算法、比率算法、優(yōu)先權(quán)調(diào)度算法、最小連接數(shù)調(diào)度算法、最快響應(yīng)時(shí)間算法等[7]。
隨機(jī)算法會(huì)把任務(wù)隨機(jī)分配給一臺(tái)服務(wù)器,這是最簡單的一種負(fù)載均衡算法[8];輪詢調(diào)度算法指的是將任務(wù)按照順序依次循環(huán)發(fā)往第一個(gè)服務(wù)器到最后一個(gè)服務(wù)器,是一種較為簡單的負(fù)載均衡算法;比率算法指的是根椐固定比例給服務(wù)器分配任務(wù),這個(gè)比例由給每個(gè)服務(wù)器分配的加權(quán)值決定[9],服務(wù)器的加權(quán)值可以人為分配;優(yōu)先權(quán)調(diào)度算法會(huì)根據(jù)各服務(wù)器權(quán)重分配任務(wù),服務(wù)器分配到的任務(wù)數(shù)的多少跟自身權(quán)重的大小成正比,服務(wù)器權(quán)重可以根據(jù)服務(wù)器性能來制定并修改;最小連接數(shù)調(diào)度算法會(huì)將任務(wù)發(fā)送到已有連接數(shù)最小的服務(wù)器上[10];最快響應(yīng)時(shí)間算法會(huì)將任務(wù)發(fā)送到響應(yīng)時(shí)間最短的服務(wù)器上[11]。
一個(gè)服務(wù)器集群由多臺(tái)服務(wù)器組成,控制中心要通過負(fù)載均衡算法來合理分配任務(wù)以實(shí)現(xiàn)集群的負(fù)載均衡,好的負(fù)載均衡算法能夠極大地提升服務(wù)器集群的工作效率。文中算法會(huì)定期更新服務(wù)器各項(xiàng)性能指標(biāo)權(quán)重,并計(jì)算出剩余負(fù)載率,然后,將剩余負(fù)載率與所設(shè)閾值進(jìn)行對比從而修正服務(wù)器的加權(quán)值,控制中心根據(jù)各服務(wù)器加權(quán)值的大小分配任務(wù)[12-14]。
首先,應(yīng)該明確如何給一個(gè)服務(wù)器進(jìn)行狀態(tài)評估[15-16],文中從CPU 頻率、磁盤I/O 速率、內(nèi)存大小、網(wǎng)絡(luò)帶寬4 個(gè)性能指標(biāo)來綜合評價(jià)服務(wù)器狀態(tài),CPU頻率決定計(jì)算機(jī)的運(yùn)行速度,磁盤I/O 速率反應(yīng)每秒輸入輸出量,內(nèi)存大小反應(yīng)服務(wù)器緩存性能,網(wǎng)絡(luò)帶寬反應(yīng)服務(wù)器能容納數(shù)據(jù)量的大小。假設(shè)一個(gè)服務(wù)器集群an由n臺(tái)服務(wù)器組成,an={ }a1,a2,…,an,第i臺(tái)服務(wù)器的固有負(fù)載能力為:
在以往的負(fù)載均衡算法中服務(wù)器各項(xiàng)性能指標(biāo)權(quán)重都是固定的,這樣可能會(huì)出現(xiàn)服務(wù)器單項(xiàng)性能指標(biāo)已處于較大壓力的狀態(tài),但其余性能指標(biāo)仍是正常狀態(tài)的情況,若用以往的算法對處于該狀況的服務(wù)器進(jìn)行判斷,則該服務(wù)器可能仍處于正常狀態(tài),但其實(shí)該服務(wù)器已處于過載狀態(tài)。為了解決這個(gè)問題應(yīng)定期升高或降低服務(wù)器各項(xiàng)性能指標(biāo)權(quán)重[17],這樣有助于對服務(wù)器當(dāng)前狀態(tài)進(jìn)行判斷。文中引入了一個(gè)更新權(quán)重的標(biāo)準(zhǔn),該標(biāo)準(zhǔn)可以通過比較單個(gè)服務(wù)器各性能指標(biāo)的當(dāng)前占用率和整個(gè)服務(wù)器集群中各性能指標(biāo)的當(dāng)前占用率的情況,來調(diào)整單個(gè)服務(wù)器各性能指標(biāo)所占權(quán)重。首先計(jì)算當(dāng)前集群中服務(wù)器各性能指標(biāo)占用率均值:
根據(jù)服務(wù)器各項(xiàng)性能指標(biāo)的新權(quán)值可以更新剩余負(fù)載率,在固定周期更新一次各指標(biāo)權(quán)值。
Wi動(dòng)態(tài)調(diào)整公式如式(11)所示。
其中,A的作用是放大服務(wù)器加權(quán)值減小的效果,根據(jù)服務(wù)器加權(quán)值初始值大小可進(jìn)行相應(yīng)修改。
當(dāng)有任務(wù)到來時(shí),控制中心會(huì)根據(jù)各服務(wù)器加權(quán)值的大小來分配任務(wù),控制中心將一個(gè)任務(wù)分配到第i臺(tái)服務(wù)器的概率為:
根據(jù)控制中心將每個(gè)任務(wù)分配到各臺(tái)服務(wù)器的概率大小可以得知服務(wù)器概率區(qū)間如圖1 所示。
圖1 服務(wù)器概率區(qū)間
當(dāng)任務(wù)到來時(shí),控制中心會(huì)生成一個(gè)0 到1 之間的數(shù)字,并通過該數(shù)字在服務(wù)器概率區(qū)間的位置決定該任務(wù)的分配。
算法流程如圖2 所示。
圖2 算法流程
1)在不同任務(wù)數(shù)的情況下,對比率法、最小連接數(shù)法以及文中算法的任務(wù)完成總時(shí)間進(jìn)行測量,結(jié)果如圖3 所示。
圖3 3種算法的任務(wù)完成總時(shí)間對比
通過觀察對比可以看出,在任務(wù)數(shù)較少的時(shí)候3 種算法的任務(wù)完成總時(shí)間相差較小,隨著任務(wù)數(shù)的增多,比率法的劣勢就逐漸體現(xiàn)出來了。文中算法與最小連接數(shù)法在任務(wù)數(shù)小于800 時(shí)任務(wù)完成總時(shí)間差距不大,且文中算法略優(yōu)于最小連接數(shù)法,當(dāng)任務(wù)數(shù)大于800 后,二者任務(wù)完成總時(shí)間的差距開始逐漸加大。
2)在不同任務(wù)數(shù)的情況下對比率法、最小連接數(shù)法以及文中算法的吞吐率(任務(wù)數(shù)/秒)進(jìn)行測量,結(jié)果如圖4 所示。
圖4 3種算法的吞吐率對比
通過觀察對比可以看出,比率法的吞吐率一直處于穩(wěn)定增長狀態(tài),且在任務(wù)數(shù)達(dá)到800 之后增長趨勢變緩。但與其他兩種算法的吞吐率相比,比率法的吞吐率始終小于其他兩種算法且差值較大;最小連接數(shù)法與文中算法的吞吐率一直在一個(gè)范圍內(nèi)波動(dòng),但文中算法的吞吐率始終優(yōu)于最小連接數(shù)法。
文中算法通過增加動(dòng)態(tài)更新服務(wù)器各項(xiàng)性能指標(biāo)權(quán)重與服務(wù)器加權(quán)值,修改了傳統(tǒng)負(fù)載均衡算法,通過對比率法、最小連接數(shù)法與文中算法在任務(wù)完成總時(shí)間及吞吐率兩方面數(shù)據(jù)進(jìn)行對比可以看出,文中算法更好地提升了集群負(fù)載程度,縮短了任務(wù)完成時(shí)間。