楊杭,張昕,趙建平
(長(zhǎng)春理工大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,長(zhǎng)春 130022)
近年來(lái),基于互聯(lián)網(wǎng)的各類應(yīng)用服務(wù)已逐步深入到人類生產(chǎn)生活的各個(gè)方面,在開(kāi)展服務(wù)過(guò)程中,大量的服務(wù)請(qǐng)求在單位時(shí)間內(nèi)到達(dá)服務(wù)端,并要求后者以盡可能短的延遲完成對(duì)服務(wù)請(qǐng)求的應(yīng)對(duì)處理。因此,服務(wù)端的吞吐能力直接影響了應(yīng)用服務(wù)質(zhì)量,其直接體現(xiàn)為支撐服務(wù)能力的服務(wù)器(集群)所具備的并發(fā)處理能力,較高的并發(fā)處理能力意味著同時(shí)單位數(shù)量的服務(wù)請(qǐng)求能夠在相對(duì)更短的時(shí)間內(nèi)被應(yīng)對(duì)處理[1]。作為一種提高并發(fā)處理能力的措施,負(fù)載均衡技術(shù)采用多點(diǎn)分發(fā)的方式實(shí)現(xiàn)對(duì)大量服務(wù)請(qǐng)求的均衡分組,使服務(wù)器集群中的多個(gè)工作服務(wù)器(按其在集群中發(fā)揮的作用可分別稱為“總控節(jié)點(diǎn)”和“工作節(jié)點(diǎn)”)各自獨(dú)立地對(duì)近似等量的服務(wù)請(qǐng)求實(shí)施接入,達(dá)成并行化的應(yīng)對(duì)處理,從而降低服務(wù)請(qǐng)求的響應(yīng)延遲,提高服務(wù)請(qǐng)求的接入效率。
本文提出基于動(dòng)態(tài)反饋的負(fù)載均衡方法,通過(guò)動(dòng)態(tài)反饋機(jī)制,實(shí)時(shí)收集各工作節(jié)點(diǎn)的運(yùn)行情況,從而在服務(wù)請(qǐng)求接入過(guò)程中根據(jù)運(yùn)行條件動(dòng)態(tài)調(diào)整工作負(fù)載的分配方案,使各工作節(jié)點(diǎn)在可行的范圍內(nèi)承擔(dān)相近的工作負(fù)載,避免負(fù)載分配不均衡。該方法能夠有效適應(yīng)并發(fā)處理過(guò)程中的動(dòng)態(tài)運(yùn)行條件,具有較好的實(shí)時(shí)性和靈活性。
最早的均衡機(jī)制是通過(guò)循環(huán)DNS(Domain Name System)實(shí)現(xiàn)的[2],該機(jī)制通過(guò)DNS配置使一臺(tái)擁有域名的主機(jī)(稱為工作主機(jī))具備多個(gè)映射地址,到達(dá)的用戶服務(wù)請(qǐng)求在與工作主機(jī)進(jìn)行交互后,由后者采用輪詢方式將請(qǐng)求分配至特定的映射地址,即另外實(shí)際開(kāi)展處理響應(yīng)的服務(wù)單元,從而實(shí)現(xiàn)由不同服務(wù)單元對(duì)多個(gè)服務(wù)請(qǐng)求進(jìn)行應(yīng)對(duì)處理,在一定程度上達(dá)到了負(fù)載均衡的效果,但此種方式下的負(fù)載分配效率相對(duì)較低,且受限于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),因此其負(fù)載均衡效果并不太理想。
Nikolaou等人[3]通過(guò)研究認(rèn)為,工作節(jié)點(diǎn)的資源實(shí)際利用率是達(dá)成更好負(fù)載均衡效果的核心因素,負(fù)載均衡方案的主要工作目標(biāo)之一即是合理規(guī)劃工作負(fù)載的分配,使各工作節(jié)點(diǎn)的資源均等充分地發(fā)揮效能。Cardellini和 Bryhni[4]等人對(duì)多種負(fù)載均衡方法進(jìn)行了對(duì)比研究,主要分析了基于客戶端、服務(wù)器、DNS以及中心分配器等負(fù)載均衡策略的優(yōu)缺點(diǎn),比較了各種實(shí)現(xiàn)算法的性能,為負(fù)載均衡方法體系提供了有力支持。關(guān)于負(fù)載均衡的產(chǎn)品,目前國(guó)內(nèi)外已經(jīng)有不少公司在從事基于軟件和硬件的負(fù)載均衡產(chǎn)品研發(fā)。其中,基于軟件負(fù)載均衡的產(chǎn)品有LVS、Lander Balance和Check Point等[5]。
在面對(duì)用戶的大量并發(fā)服務(wù)請(qǐng)求時(shí),實(shí)施負(fù)載均衡的核心任務(wù)是通過(guò)合理的任務(wù)調(diào)度安排策略,使得服務(wù)器集群在執(zhí)行服務(wù)任務(wù)過(guò)程中滿足來(lái)自總體完成時(shí)間、任務(wù)吞吐量、資源利用效率以及可擴(kuò)展性等多方面的約束。本文提出的基于動(dòng)態(tài)反饋的負(fù)載均衡方法,重點(diǎn)考慮工作節(jié)點(diǎn)自身負(fù)載狀況和接入任務(wù)情況的動(dòng)態(tài)性,形成并發(fā)請(qǐng)求工作條件下的任務(wù)分配及執(zhí)行近優(yōu)解決方案。
本文主要圍繞以下四個(gè)方面構(gòu)建負(fù)載均衡方法:
(1)節(jié)點(diǎn)參數(shù):即各個(gè)工作節(jié)點(diǎn)即時(shí)的負(fù)載情況,包括運(yùn)行隊(duì)列中的任務(wù)數(shù)目、系統(tǒng)調(diào)用的速率、空閑存儲(chǔ)器的大小等。
(2)評(píng)估決策:根據(jù)當(dāng)前工作節(jié)點(diǎn)的負(fù)載情況評(píng)估是否需要將后續(xù)到達(dá)的任務(wù)分配轉(zhuǎn)移至其他工作節(jié)點(diǎn)并處理。本文中采用閾值限定的方式對(duì)待任務(wù)轉(zhuǎn)移進(jìn)行判定。
(3)轉(zhuǎn)移位置:對(duì)于適合轉(zhuǎn)移到其他工作節(jié)點(diǎn)的任務(wù),要明確任務(wù)轉(zhuǎn)移的目標(biāo)工作節(jié)點(diǎn)。
(4)維持手段:確定可進(jìn)行轉(zhuǎn)移的任務(wù)列表,進(jìn)而通過(guò)任務(wù)傳輸實(shí)現(xiàn)負(fù)載調(diào)度,保持負(fù)載均衡。
圖1 負(fù)載均衡方法執(zhí)行流程
通過(guò)對(duì)上述四個(gè)方面進(jìn)行綜合分析,首先對(duì)運(yùn)行場(chǎng)景中的相關(guān)可用資源情況進(jìn)行收集和識(shí)別,具體包括:可用的工作節(jié)點(diǎn)、節(jié)點(diǎn)的處理能力、可用的存儲(chǔ)空間和內(nèi)存;然后分析和判斷當(dāng)前接入任務(wù)的執(zhí)行情況,如果所有任務(wù)均已完成,則轉(zhuǎn)至等待新任務(wù)的接入;如果存有尚待完成的任務(wù),則對(duì)任務(wù)需求進(jìn)行分析,具體需求包括:任務(wù)的到達(dá)率、任務(wù)數(shù)量以及各項(xiàng)任務(wù)對(duì)內(nèi)存的預(yù)計(jì)占用情況,并根據(jù)任務(wù)需求相應(yīng)調(diào)整任務(wù)處理策略及參數(shù);接下來(lái)采集各工作節(jié)點(diǎn)中任務(wù)運(yùn)行隊(duì)列參數(shù),以實(shí)現(xiàn)對(duì)當(dāng)前處理性能的判斷,從而確定執(zhí)行負(fù)載均衡措施的邏輯起始節(jié)點(diǎn)及可行時(shí)間點(diǎn);在此之后配置和執(zhí)行負(fù)載遷移方法,即選定需要遷出的任務(wù)條目及任務(wù)所在的工作節(jié)點(diǎn),并將其遷入另外的工作節(jié)點(diǎn);接下來(lái)識(shí)別是否有新的任務(wù)等待接入,如果有新任務(wù),則轉(zhuǎn)至之前對(duì)運(yùn)行場(chǎng)景中可用資源情況的收集和識(shí)別,并執(zhí)行后續(xù)的相應(yīng)流程;如果沒(méi)有新任務(wù),則完成當(dāng)前負(fù)載均衡方法的執(zhí)行,如圖1所示。
針對(duì)并發(fā)處理過(guò)程的實(shí)際情況,本文提出了面向全局均衡質(zhì)量的工作情況動(dòng)態(tài)反饋策略,綜合考慮負(fù)載均衡場(chǎng)景的關(guān)鍵要素及其相互作用。在開(kāi)展請(qǐng)求接入和服務(wù)響應(yīng)的過(guò)程中,持續(xù)采集和分析各工作節(jié)點(diǎn)負(fù)載情況,重點(diǎn)圍繞全局的負(fù)載均衡質(zhì)量執(zhí)行相應(yīng)任務(wù)處理,結(jié)合動(dòng)態(tài)反饋方式,保持均衡措施的合用和有效。
本文參考了控制論中的反饋原理動(dòng)態(tài)地分析工作節(jié)點(diǎn)當(dāng)前的運(yùn)行狀況,評(píng)估負(fù)載指標(biāo),進(jìn)而調(diào)整和規(guī)劃任務(wù)負(fù)載均衡的方案,保障工作性能的持續(xù)有效,如圖2所示。
圖2 基于動(dòng)態(tài)反饋的評(píng)估機(jī)制
本文以各節(jié)點(diǎn)的工作狀態(tài)作為出發(fā)點(diǎn)對(duì)其資源占用情況進(jìn)行持續(xù)評(píng)估,并分析任務(wù)執(zhí)行過(guò)程中的各種特征數(shù)據(jù),持續(xù)評(píng)估實(shí)施負(fù)載均衡方案后的服務(wù)器集群系統(tǒng)性能,相應(yīng)調(diào)整任務(wù)分配方案。其具體的評(píng)估任務(wù)包括兩項(xiàng):
(1)對(duì)工作節(jié)點(diǎn)的負(fù)載情況評(píng)估;
(2)根據(jù)負(fù)載情況評(píng)估,制定負(fù)載閾值設(shè)定策略,并根據(jù)評(píng)估結(jié)果對(duì)閾值進(jìn)行動(dòng)態(tài)調(diào)整。
節(jié)點(diǎn)負(fù)載情況評(píng)估主要包括對(duì)工作節(jié)點(diǎn)自身情況的評(píng)估和對(duì)各節(jié)點(diǎn)間交互情況的評(píng)估,其對(duì)應(yīng)的工況指標(biāo)參數(shù)分別是:
其中,idle表示在對(duì)應(yīng)時(shí)間點(diǎn)CPU的空閑時(shí)間,cpu表示相應(yīng)的CPU總運(yùn)行時(shí)間。
其中,用MemTotal表示RAM總共的物理空間,用MemFree表示未使用的內(nèi)存。
綜上,在完成對(duì)工作節(jié)點(diǎn)內(nèi)各部件工作情況評(píng)估的基礎(chǔ)上,節(jié)點(diǎn)工況指標(biāo)表達(dá)為:
其中,σ代表對(duì)應(yīng)部件在評(píng)估中所占的衡量權(quán)重,稱為部件性能權(quán)重,上述各部件工況指標(biāo)均采用使用率表達(dá),其取值范圍為0%至100%,0%代表該部件未被使用,100%代表該部件已達(dá)到滿負(fù)載工作狀態(tài)。
相應(yīng)的節(jié)點(diǎn)交互工況指標(biāo)表達(dá)為:
其中,m為當(dāng)前工作節(jié)點(diǎn)保持與其他節(jié)點(diǎn)連接的總數(shù)表示當(dāng)前工作節(jié)點(diǎn)與標(biāo)識(shí)編號(hào)為k的其他節(jié)點(diǎn)的連通交互情況,如果存在交互連通(即connected),其取值為1,否則(即disconnected)為0。
通過(guò)上述指標(biāo),對(duì)每個(gè)工作節(jié)點(diǎn)的負(fù)載指標(biāo)評(píng)估表達(dá)為:
其中,θ表示對(duì)應(yīng)指標(biāo)在評(píng)估中所占的衡量權(quán)重,稱為節(jié)點(diǎn)性能權(quán)重。
通過(guò)上述計(jì)算過(guò)程,可根據(jù)上述工作節(jié)點(diǎn)的負(fù)載指標(biāo)評(píng)估結(jié)果構(gòu)建調(diào)度策略。其中,設(shè)定兩個(gè)閾值作為調(diào)度決策參數(shù),分別為δ1和δ2,并且δ1<δ2。
綜合分析公式(3)、(4)、(5)可以得知,由變量標(biāo)識(shí)S表征的指標(biāo)參數(shù)直接反映了相關(guān)部件以及交互活動(dòng)在負(fù)載均衡過(guò)程中的負(fù)載情況,部件性能權(quán)重σ和節(jié)點(diǎn)性能權(quán)重θ反映了各項(xiàng)負(fù)載情況在負(fù)載均衡方案中的關(guān)鍵程度。因此,上述公式中權(quán)重參數(shù)的設(shè)定能夠?qū)⒇?fù)載均衡任務(wù)場(chǎng)景引入到調(diào)度方案中,其取值主要來(lái)源于數(shù)據(jù)中心管理人員的經(jīng)驗(yàn)設(shè)定,并通過(guò)長(zhǎng)時(shí)間的運(yùn)行積累逐步形成穩(wěn)定配置。另外,通過(guò)實(shí)際工作中積累的經(jīng)驗(yàn)和對(duì)服務(wù)器系統(tǒng)性能表現(xiàn)的分析,推薦的調(diào)度決策初始參數(shù)(即δ1和δ2)取值分別設(shè)定為0.5和0.8。
在負(fù)載均衡運(yùn)行過(guò)程中,需要通過(guò)連續(xù)且持續(xù)的負(fù)載參數(shù)采集,形成周期性的負(fù)載指標(biāo)評(píng)估,根據(jù)負(fù)載均衡方案運(yùn)行的具體場(chǎng)景,可對(duì)采集周期進(jìn)行調(diào)整,以減小由頻繁評(píng)估參數(shù)采集造成的系統(tǒng)性能降低和能量損耗。根據(jù)實(shí)際工作經(jīng)驗(yàn)表明,評(píng)估參數(shù)的采集周期可根據(jù)服務(wù)請(qǐng)求頻度相應(yīng)設(shè)定在10秒至90秒之間。
在基于動(dòng)態(tài)反饋策略執(zhí)行負(fù)載均衡措施過(guò)程中,經(jīng)分析發(fā)現(xiàn),引發(fā)集群中任務(wù)動(dòng)態(tài)調(diào)整進(jìn)而帶動(dòng)反饋動(dòng)作的情況主要發(fā)生在新加入任務(wù)的實(shí)時(shí)載入、網(wǎng)絡(luò)帶寬情況的實(shí)時(shí)動(dòng)態(tài)變動(dòng)以及各工作節(jié)點(diǎn)即時(shí)的負(fù)載能力調(diào)整等三個(gè)場(chǎng)景中。
在新任務(wù)載入階段,如果有新的工作節(jié)點(diǎn)被納入到負(fù)載均衡系統(tǒng)方案中,此類工作節(jié)點(diǎn)的加入基本不會(huì)對(duì)整體任務(wù)規(guī)劃和集群性能表現(xiàn)產(chǎn)生消極影響。新加入的工作節(jié)點(diǎn)會(huì)被優(yōu)先配置執(zhí)行完成時(shí)間相對(duì)較短的任務(wù),并按照上述策略執(zhí)行相應(yīng)反饋措施。
在執(zhí)行負(fù)載均衡解決方案的服務(wù)器集群中,其總控節(jié)點(diǎn)部署的負(fù)載均衡算法綜合考慮所有工作節(jié)點(diǎn)的實(shí)時(shí)負(fù)載情況和處理性能,不斷調(diào)整任務(wù)分布的比例,避免任務(wù)分配不平衡造成的各種問(wèn)題。由于負(fù)載均衡處理的任務(wù)量隨時(shí)間動(dòng)態(tài)變化,通過(guò)對(duì)閾值的動(dòng)態(tài)調(diào)整,使各工作節(jié)點(diǎn)工作情況大致等于負(fù)載閾值,實(shí)現(xiàn)任務(wù)均衡分配并充分發(fā)揮各工作節(jié)點(diǎn)的處理效能。
圖3 負(fù)載均衡工作過(guò)程
負(fù)載均衡的具體工作過(guò)程為(參見(jiàn)圖3):
(1)在總控節(jié)點(diǎn)開(kāi)展負(fù)載均衡管理,根據(jù)現(xiàn)有的節(jié)點(diǎn)工作情況和負(fù)載均衡閾值,分析系統(tǒng)負(fù)載情況;
(2)通過(guò)節(jié)點(diǎn)之間的連接,總控節(jié)點(diǎn)將工作任務(wù)分配至各個(gè)工作節(jié)點(diǎn);
(3)各工作節(jié)點(diǎn)對(duì)接收到的任務(wù)進(jìn)行處理;
(4)收集各個(gè)工作節(jié)點(diǎn)的實(shí)時(shí)負(fù)載狀態(tài)信息;
(5)根據(jù)收集的負(fù)載狀態(tài)信息,計(jì)算和評(píng)估各節(jié)點(diǎn)工作情況;
(6)對(duì)比節(jié)點(diǎn)的工作情況和負(fù)載均衡閾值,根據(jù)預(yù)設(shè)的均衡策略,在后續(xù)的負(fù)載均衡管理中相應(yīng)調(diào)整負(fù)載均衡閾值。
在負(fù)載均衡工作過(guò)程的信息收集階段,總控節(jié)點(diǎn)對(duì)其他工作節(jié)點(diǎn)的實(shí)時(shí)運(yùn)行情況信息進(jìn)行收集,收集的信息主要包括所在節(jié)點(diǎn)的負(fù)載情況、任務(wù)分配情況、響應(yīng)速度等信息。收集過(guò)程根據(jù)策略以及實(shí)際情況,一般情況下都是周期性的機(jī)制。比較常用的機(jī)制是工作節(jié)點(diǎn)周期性地向總控節(jié)點(diǎn)發(fā)送信息,工作節(jié)點(diǎn)利用心跳機(jī)制周期性的向總控節(jié)點(diǎn)發(fā)送狀態(tài)信息,保證總控節(jié)點(diǎn)掌握較新的工作節(jié)點(diǎn)狀態(tài),并使前者以此判斷工作節(jié)點(diǎn)是否存在。
周期性的信息收集方式實(shí)現(xiàn)起來(lái)較為簡(jiǎn)單,但是所存在的問(wèn)題也相對(duì)較為明顯。首先,周期性的信息傳輸會(huì)加重總控節(jié)點(diǎn)的負(fù)載,并且所有工作節(jié)點(diǎn)均向總控節(jié)點(diǎn)發(fā)送消息,會(huì)造成較大的通信開(kāi)銷(xiāo);其次,消息傳送的周期長(zhǎng)短不容易確定,太長(zhǎng)會(huì)造成信息更新不及時(shí),太短會(huì)造成通信負(fù)載的增加;最后,假如在一次任務(wù)分配周期內(nèi)發(fā)送多次新任務(wù),會(huì)導(dǎo)致后續(xù)任務(wù)不能得到高效的處理。反之,當(dāng)兩次更新之間沒(méi)有新任務(wù)到達(dá),就會(huì)造成系統(tǒng)資源的浪費(fèi)。
鑒于上述情況,總控節(jié)點(diǎn)的周期性信息收集并不完全適合實(shí)際應(yīng)用中出現(xiàn)的各種狀況。因此,本文對(duì)周期性信息收集方式進(jìn)行擴(kuò)展,使總控節(jié)點(diǎn)在進(jìn)行周期性信息收集的同時(shí)還根據(jù)當(dāng)前任務(wù)數(shù)據(jù)量的需要采集工作節(jié)點(diǎn)狀態(tài)信息。根據(jù)任務(wù)數(shù)據(jù)量進(jìn)行信息收集的算法思想是:總控節(jié)點(diǎn)接收到新任務(wù)時(shí),主動(dòng)向工作節(jié)點(diǎn)發(fā)送狀態(tài)詢問(wèn)請(qǐng)求,收集工作節(jié)點(diǎn)的負(fù)載情況;工作節(jié)點(diǎn)接收到總控節(jié)點(diǎn)的狀態(tài)詢問(wèn)請(qǐng)求時(shí),就會(huì)將當(dāng)前的負(fù)載情況、資源占有情況、任務(wù)分配情況等信息發(fā)送給總控節(jié)點(diǎn)。
總控節(jié)點(diǎn)調(diào)度過(guò)程如下:
if新任務(wù)到達(dá) ||開(kāi)始新的時(shí)間周期
重置clock
總控節(jié)點(diǎn)發(fā)送詢問(wèn)請(qǐng)求,接受從節(jié)點(diǎn)負(fù)載信息
if當(dāng)前節(jié)點(diǎn)i綜合信息滿足
給當(dāng)前節(jié)點(diǎn)i分配或者加入隊(duì)列
end if
end if
從當(dāng)前節(jié)點(diǎn)i工作過(guò)程:
if當(dāng)前節(jié)點(diǎn)i接收到總控節(jié)點(diǎn)的詢問(wèn)請(qǐng)求
將負(fù)載信息反饋給總控節(jié)點(diǎn)
end if
在整個(gè)節(jié)點(diǎn)的通信過(guò)程中,可采用TCP協(xié)議進(jìn)行消息傳輸來(lái)確??煽啃裕鶕?jù)傳輸特點(diǎn),工作節(jié)點(diǎn)接收總控節(jié)點(diǎn)分配任務(wù)并回復(fù)總控節(jié)點(diǎn),為了確保總控節(jié)點(diǎn)監(jiān)測(cè)到的信息更準(zhǔn)確,工作節(jié)點(diǎn)收到任務(wù)之后向總控節(jié)點(diǎn)回復(fù)消息,該消息中包含工作節(jié)點(diǎn)自身信息和在負(fù)載均衡調(diào)整過(guò)程中所用到的伙伴節(jié)點(diǎn)信息,并且每一個(gè)工作節(jié)點(diǎn)都在回復(fù)消息中添加其攜帶的時(shí)間戳,以保證總控節(jié)點(diǎn)收到的信息是最新的??偪毓?jié)點(diǎn)依據(jù)攜帶信息對(duì)所存的相應(yīng)工作節(jié)點(diǎn)信息進(jìn)行更新,既能準(zhǔn)確獲得工作節(jié)點(diǎn)的負(fù)載信息又能減少節(jié)點(diǎn)之間的通信量,又可保持調(diào)度算法的簡(jiǎn)單可行。按需收集狀態(tài)信息的方式會(huì)出現(xiàn)空載運(yùn)行的情況,為此,當(dāng)系統(tǒng)空閑時(shí),工作節(jié)點(diǎn)等待總控節(jié)點(diǎn)收集信息并做出決策;當(dāng)系統(tǒng)運(yùn)行時(shí),工作節(jié)點(diǎn)并行處理實(shí)際任務(wù)和回復(fù)總控節(jié)點(diǎn)的詢問(wèn)請(qǐng)求,并不持續(xù)等待分配任務(wù),能夠充分利用系統(tǒng)資源。
總控節(jié)點(diǎn)只在提交任務(wù)的時(shí)候收集信息,當(dāng)系統(tǒng)負(fù)載均衡處理壓力比較大且特定時(shí)間段內(nèi)執(zhí)行任務(wù)數(shù)量過(guò)大時(shí),總控節(jié)點(diǎn)在任務(wù)分配方面消耗的運(yùn)算資源較多,時(shí)間消耗大。上述算法在進(jìn)行設(shè)計(jì)的時(shí)候考慮到工作節(jié)點(diǎn)在接收到任務(wù)之后捎帶發(fā)送自己最新的負(fù)載信息給總控節(jié)點(diǎn),在此過(guò)程中總控節(jié)點(diǎn)只會(huì)更新接收到任務(wù)的節(jié)點(diǎn)負(fù)載信息,而那些沒(méi)有接收任務(wù)的節(jié)點(diǎn)不會(huì)發(fā)送負(fù)載信息給總控節(jié)點(diǎn)。通過(guò)此種方式,能夠有效降低空閑節(jié)點(diǎn)接收到新任務(wù)的可能性。結(jié)合采用周期性的節(jié)點(diǎn)負(fù)載信息收集方式,使總控節(jié)點(diǎn)在保持按需收集方式的同時(shí),周期性地收集所有節(jié)點(diǎn)的信息,可提高近期未被分配任務(wù)的節(jié)點(diǎn)接受新任務(wù)的可能性。綜上所述,周期性收集和按需收集相結(jié)合的工作模式,能夠保證負(fù)載信息的實(shí)時(shí)性和降低節(jié)點(diǎn)間交互的通信量,在提高系統(tǒng)整體性能的同時(shí),較好地均衡各節(jié)點(diǎn)的負(fù)載。
本文采用CloudSim云計(jì)算仿真平臺(tái)驗(yàn)證負(fù)載均衡方案(版本為4.0),CloudSim是基于離散事件模型使用Java語(yǔ)言設(shè)計(jì)開(kāi)發(fā)的仿真模擬應(yīng)用系統(tǒng)[6],具備Java語(yǔ)言的跨平臺(tái)部署特性,可在Windows、Linux或MacOS操作系統(tǒng)中運(yùn)行,用于在集群環(huán)境下對(duì)系統(tǒng)架構(gòu)和部署方案進(jìn)行建模和仿真。
本文選擇了CloudSim的部分核心類用于構(gòu)建仿真模擬環(huán)境,具體包括:
(1)DataCenter class:該類用于模擬集群基礎(chǔ)設(shè)施中的數(shù)據(jù)中心解決方案,封裝了在其中配置相應(yīng)工作節(jié)點(diǎn)的相關(guān)方法;
(2)DataCenterBroker class:該類封裝了管理內(nèi)部工作節(jié)點(diǎn)的相關(guān)方法,支持對(duì)工作節(jié)點(diǎn)的加入、回收等操作;
(3)Host class:該類用于模擬集群環(huán)境下物理主機(jī)對(duì)虛擬機(jī)的映射關(guān)系,封裝了物理主機(jī)對(duì)部署虛擬機(jī)的管理策略,如對(duì)內(nèi)存容量、數(shù)據(jù)存儲(chǔ)容量、處理器性能等性能參數(shù)的管理;同時(shí),該類還提供對(duì)虛擬機(jī)協(xié)作交互的仿真模擬。
(4)VirtualMachine class:該類用于模擬集群中部署的虛擬機(jī),其在Host class中作為成員模擬多個(gè)虛擬機(jī)之間的資源共享和內(nèi)部調(diào)度等策略;
(5)VMScheduler class:該類用于模擬對(duì)多個(gè)虛擬機(jī)之間的調(diào)度和管理策略,允許實(shí)現(xiàn)虛擬機(jī)任務(wù)的掛載;
(6)VMProvsioner class:該類用于對(duì)DataCenter對(duì)象中Host對(duì)象與VirtualMachine對(duì)象的映射關(guān)系進(jìn)行配置;
(7)Cloudlet class:該類用于對(duì)集群中的任務(wù)進(jìn)行模擬,并支持對(duì)任務(wù)的資源配置。
本文使用3臺(tái)物理主機(jī)(分別標(biāo)識(shí)為PH_LB_1601、PH_LB_1602和PH_LB_1603)配置部署負(fù)載均衡仿真實(shí)驗(yàn)環(huán)境,各臺(tái)物理主機(jī)在安裝和配置JDK8.0基礎(chǔ)上,配置CloudSim4.0,并相應(yīng)設(shè)置了環(huán)境變量。
負(fù)載均衡仿真實(shí)驗(yàn)將上述3臺(tái)物理主機(jī)配置到1個(gè)DataCenter對(duì)象中(標(biāo)識(shí)為CS_DC_LB)。物理主機(jī)PH_LB_1601在該DataCenter對(duì)象中配置2個(gè)VirtualMachine對(duì)象(分別標(biāo)識(shí)為VM_CL_1601_01、VM_LB_CTL_1601_02)作為負(fù)載均衡控制器,用于執(zhí)行負(fù)載均衡的調(diào)度和管理;物理主機(jī)PH_LB_1602和物理主機(jī)PH_LB_1603各自分別構(gòu)建了3個(gè)VirtualMachine對(duì)象(標(biāo)識(shí)依次為VM_LB_1602_01、 VM_LB_1602_02、 VM_LB_1602_03、VM_LB_1603_01、VM_LB_1603_02和 VM_LB_1603_03)。上述物理主機(jī)內(nèi)部的VirtualMachine對(duì)象形成了由7個(gè)節(jié)點(diǎn)組成的負(fù)載均衡方案。上述節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖4所示。
基于上述網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),調(diào)用Host對(duì)象和VMScheduler對(duì)象將本文提出的基于動(dòng)態(tài)反饋的負(fù)載均衡策略和調(diào)度算法部署至物理主機(jī)PH_LB_1601、物理主機(jī)PH_LB_1602和物理主機(jī)PH_LB_1603的虛擬節(jié)點(diǎn)中。
圖4 實(shí)驗(yàn)方案的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
在測(cè)試負(fù)載均衡方案時(shí),本文在VirtualMachine對(duì)象VM_CL_1601_01中配置由Httperf生成負(fù)載任務(wù),用于測(cè)試服務(wù)請(qǐng)求接入能力。測(cè)試方案中重點(diǎn)關(guān)注兩項(xiàng)性能指標(biāo):(1)服務(wù)請(qǐng)求的平均響應(yīng)時(shí)間與并發(fā)連接數(shù)的關(guān)聯(lián)關(guān)系,以反映方案的服務(wù)請(qǐng)求接入性能;(2)給定服務(wù)請(qǐng)求場(chǎng)景中的可用并發(fā)連接數(shù),以反映方案能夠處理的最大并發(fā)接入能力。實(shí)驗(yàn)環(huán)境中由多臺(tái)服務(wù)器構(gòu)成的集群對(duì)多種并發(fā)連接數(shù)的平均響應(yīng)時(shí)間表現(xiàn)比較穩(wěn)定,測(cè)試數(shù)據(jù)如表-1所示。從上述實(shí)驗(yàn)結(jié)果可以看出,采用集群方式的負(fù)載均衡方案在處理并發(fā)請(qǐng)求方面具備較好的性能表現(xiàn),在并發(fā)連接數(shù)持續(xù)上升的情況下,響應(yīng)時(shí)間基本保持在7ms以內(nèi)??梢?jiàn)采用集群方式構(gòu)建的負(fù)載均衡方案能夠有效控制服務(wù)器處理請(qǐng)求接入的時(shí)間。
表1 負(fù)載均衡方案的響應(yīng)時(shí)間
對(duì)負(fù)載均衡策略進(jìn)行評(píng)價(jià)時(shí),主要考察實(shí)際并發(fā)連接數(shù)來(lái)分析基于動(dòng)態(tài)反饋的負(fù)載均衡算法的性能表現(xiàn),并以Nginx自帶的IP Hash算法作為對(duì)比。其中,IP Hash算法的核心思想是根據(jù)服務(wù)請(qǐng)求來(lái)源的IP地址進(jìn)行哈希映射,并將哈希運(yùn)算結(jié)果作為選擇實(shí)際應(yīng)答服務(wù)請(qǐng)求的服務(wù)器節(jié)點(diǎn)的依據(jù),進(jìn)而將服務(wù)請(qǐng)求分配至相應(yīng)的服務(wù)器節(jié)點(diǎn),如表2所示。
表2 實(shí)際并發(fā)連接數(shù)對(duì)比
由圖5分析能夠發(fā)現(xiàn),當(dāng)并發(fā)連接數(shù)較低時(shí)(800以內(nèi)),實(shí)際并發(fā)連接數(shù)基本與并發(fā)請(qǐng)求連接數(shù)持平,偶有少量丟失情況(IP Hash算法的丟失率為0.2%,基于動(dòng)態(tài)反饋的負(fù)載均衡算法的丟失率為0.6%),能夠保持基本正常的請(qǐng)求接入性能。當(dāng)并發(fā)連接數(shù)持續(xù)增加并達(dá)到1000時(shí),IP Hash算法出現(xiàn)了明顯的并發(fā)請(qǐng)求連接丟失情況,其丟失率達(dá)到31.8%,而此時(shí)基于動(dòng)態(tài)反饋的負(fù)載均衡算法的丟失率僅為2%。相比之下可見(jiàn),后者擁有更好的服務(wù)請(qǐng)求接入性能。
圖5 實(shí)際并發(fā)連接數(shù)測(cè)試對(duì)比結(jié)果
本文通過(guò)對(duì)動(dòng)態(tài)負(fù)載均衡方法的介紹,優(yōu)化了動(dòng)態(tài)負(fù)載均衡過(guò)程中的動(dòng)態(tài)反饋策略,并在實(shí)際過(guò)程中實(shí)現(xiàn)負(fù)載均衡的任務(wù)調(diào)度,對(duì)負(fù)載均衡工作過(guò)程中的任務(wù)隊(duì)列調(diào)度進(jìn)行了詳細(xì)的分析。論文首先實(shí)現(xiàn)對(duì)節(jié)點(diǎn)負(fù)載情況的一個(gè)評(píng)估,之后通過(guò)對(duì)負(fù)載均衡的閾值設(shè)定,進(jìn)而實(shí)現(xiàn)了在負(fù)載均衡優(yōu)化策略方面的優(yōu)化。并通過(guò)搭建實(shí)驗(yàn)環(huán)境對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行了仿真驗(yàn)證,證明進(jìn)行優(yōu)化了的基于動(dòng)態(tài)反饋的負(fù)載均衡算法在解決數(shù)據(jù)高并發(fā)方面比IP Hash算法更加良好。隨著網(wǎng)絡(luò)數(shù)據(jù)量不斷增大這一現(xiàn)實(shí)問(wèn)題,在數(shù)據(jù)高并發(fā)處理過(guò)程中,對(duì)于網(wǎng)絡(luò)負(fù)載均衡優(yōu)化的研究需要采用更加優(yōu)化的算法,在以后的工作中將會(huì)在該方面進(jìn)行更加深入的研究。
[1]文軍,張思峰,李濤柱.移動(dòng)互聯(lián)網(wǎng)技術(shù)發(fā)展現(xiàn)狀及趨勢(shì)綜述[J].通信技術(shù),2014(9):977-984.
[2]Cybenko G.Dynamic load balancing for distributed memory multiprocessors[J].JournalofParallel&Distributed Computing,1989,7(2):279-301.
[3]Bond A.ODSI:Enterprise service coordination[C].International Symposium on Distributed Objects and Applications,2001.
[4]Xinhua E,Han J,Wang Y,et al.Big data-as-a-service:definition and architecture[C].IEEE International Conference on Communication Technology,IEEE,2013:738-742.
[5]Raghavendra S,Chitra S Reddy,Geeta C M,et al.Survey on data storage and retrievaltechniques over encrypted cloud data[J].International Journal of Computer Science and Information Security(IJCSIS),2016,14(9):718-745.