楊柳青 王 沖
(1.玉林師范學(xué)院教育技術(shù)中心 玉林 537000)(2.桂林電子科技大學(xué)商學(xué)院 桂林 541004)
互聯(lián)網(wǎng)的普及與發(fā)展,以及用戶服務(wù)需求的持續(xù)提升,導(dǎo)致互聯(lián)網(wǎng)中的數(shù)據(jù)呈指數(shù)形式遞增[1]。為滿足海量用戶的訪問(wèn)需要,各種各樣的網(wǎng)站層出不窮。然而,面對(duì)日益增長(zhǎng)的用戶訪問(wèn)量,遠(yuǎn)遠(yuǎn)超過(guò)了網(wǎng)站單個(gè)Web服務(wù)器的所能承受的能力,因此發(fā)展到現(xiàn)在,一個(gè)網(wǎng)站的Web服務(wù)器并不是只有一個(gè),往往是多個(gè),甚至是十幾,幾十個(gè),并且仍處在不斷增加的狀態(tài),以滿足海量用戶每時(shí)每刻的訪問(wèn)請(qǐng)求[2]。在這種背景下,Web服務(wù)資源分配成為日漸突出的一個(gè)問(wèn)題,例如經(jīng)常出現(xiàn)訪問(wèn)請(qǐng)求“扎堆”的現(xiàn)象,即服務(wù)資源并不能合理的被分配,用于處理訪問(wèn)請(qǐng)求,可能導(dǎo)致多個(gè)訪問(wèn)請(qǐng)求聚集到一個(gè)高性能的服務(wù)資源上,造成該服務(wù)資源繁忙,服務(wù)時(shí)延問(wèn)題驗(yàn)證,而有的服務(wù)資源未能分配到訪問(wèn)請(qǐng)求,導(dǎo)致服務(wù)資源處于“饑餓、閑置”狀態(tài),造成服務(wù)資源浪費(fèi)[3]。
面對(duì)這種情況,對(duì)Web服務(wù)資源分配成為相關(guān)領(lǐng)域研究的熱點(diǎn)問(wèn)題。很多專家和學(xué)者都提出了解決方法,例如,文獻(xiàn)[4]提出基于進(jìn)化多目標(biāo)優(yōu)化的分配模型,通過(guò)資源空閑率、存儲(chǔ)資源的空閑率、微服務(wù)的實(shí)際空閑率以及負(fù)載均衡率組成多目標(biāo)函數(shù),然后設(shè)置四個(gè)約束條件,最后利用NSGA-III和MOEA/D組合進(jìn)化算法求解,得出微服務(wù)組合分配方案。文獻(xiàn)[5]提出基于二部圖最大匹配的分配模型,首先獲取服務(wù)器所要處理的訪問(wèn)量與訪問(wèn)處理耗時(shí)之間的比值,并以此作為負(fù)載指標(biāo),將其反饋給管理服務(wù)器,然后構(gòu)建二部圖。以構(gòu)建的二部圖為基礎(chǔ),采用匈牙利算法求解二部圖的并獲得最大匹配結(jié)果,根據(jù)匹配結(jié)果進(jìn)行資源的分配。文獻(xiàn)[6]提出基于Nginx服務(wù)器的分配模型,首先采集服務(wù)資源的負(fù)載數(shù)據(jù),然后負(fù)載均衡器通過(guò)計(jì)算找到最優(yōu)節(jié)點(diǎn)服務(wù)器,然后將訪問(wèn)任務(wù)通過(guò)動(dòng)態(tài)負(fù)反饋調(diào)度算法將其分配給轉(zhuǎn)發(fā)節(jié)點(diǎn),完成資源的均衡調(diào)度。文獻(xiàn)[7]研究一種大型集群環(huán)境中的資源可擴(kuò)展性分配方法,構(gòu)建資源分配的決策框架,結(jié)合動(dòng)態(tài)填充決策的方式,以對(duì)資源的需求目標(biāo)進(jìn)行分析。最后,根據(jù)資源的需求特征,進(jìn)行資源的適應(yīng)性分配。文獻(xiàn)[8]提出一種基于分層DRL的高效資源分配方法,該方法研究分層強(qiáng)化學(xué)習(xí)資源分配框架,以解決資源分配的功耗問(wèn)題,并借助時(shí)間尺度確定資源分配的最優(yōu)解,以實(shí)現(xiàn)資源的高效分配。
結(jié)合當(dāng)前研究經(jīng)驗(yàn),本文研究一種基于特征信息定位的Web服務(wù)資源均衡分配模型,并通過(guò)實(shí)驗(yàn)對(duì)所構(gòu)建模型的性能進(jìn)行驗(yàn)證,結(jié)果表明所構(gòu)建模型可以在提高資源利用率的基礎(chǔ)上,降低服務(wù)時(shí)延,改善Web服務(wù)質(zhì)量。
每個(gè)用戶登錄網(wǎng)站的目的是獲取資源,而資源在獲取前需要用戶發(fā)送訪問(wèn)請(qǐng)求,根據(jù)請(qǐng)求Web服務(wù)器搜索資源,最后將其反饋給用戶。由此可知,Web服務(wù)需求指的是用戶訪問(wèn)請(qǐng)求,也可以稱為訪問(wèn)任務(wù)。用戶要訪問(wèn)的資源不同,產(chǎn)生的服務(wù)需求相應(yīng)地也存在差異?;谏鲜霰尘埃绾芜M(jìn)行服務(wù)需求列隊(duì),并根據(jù)自身需求,向Web服務(wù)資源發(fā)送資源需求標(biāo)準(zhǔn)至關(guān)重要,是后續(xù)資源分配的重要參考[9]。下面針對(duì)上述兩個(gè)方面進(jìn)行具體分析。
2.1.1 服務(wù)需求列隊(duì)
服務(wù)需求列隊(duì)的標(biāo)準(zhǔn)有很多,如用戶請(qǐng)求時(shí)間、用戶求取長(zhǎng)度等,但是這些列隊(duì)標(biāo)準(zhǔn)并沒(méi)有將訪問(wèn)需要的重要性或緊急性考慮在內(nèi),因此可能會(huì)降低任務(wù)完成的實(shí)時(shí)性,從而影響Web服務(wù)器的整體工作質(zhì)量[10]。針對(duì)這種情況,本章節(jié)基于任務(wù)重要性或緊急性判斷任務(wù)隊(duì)列優(yōu)先級(jí),以此組建服務(wù)需求列隊(duì)。該隊(duì)列分為三級(jí),如圖1所示。
圖1 服務(wù)需求列隊(duì)模型
圖1中,最上邊的一級(jí)服務(wù)需求按照時(shí)限因子進(jìn)行排隊(duì),用戶訪問(wèn)任務(wù)的時(shí)限因子越短,認(rèn)為該服務(wù)需求越緊急,越需要排在隊(duì)列前[11]。第二級(jí)服務(wù)需求按照進(jìn)入隊(duì)列先后順序的規(guī)則進(jìn)行排隊(duì)。第三級(jí)的服務(wù)需求則是按照優(yōu)先級(jí)先后順序進(jìn)行排隊(duì),優(yōu)先級(jí)水平越高隊(duì)列越靠前,即允許服務(wù)需求搶占隊(duì)列位置[12]。搶占策略如下:
1)當(dāng)有新服務(wù)需求時(shí),若新服務(wù)需求的隊(duì)列優(yōu)先級(jí)與第i個(gè)服務(wù)需求的隊(duì)列優(yōu)先級(jí)相等,且新服務(wù)需求的編號(hào)與第i個(gè)服務(wù)需求的編號(hào)也相同,則不允許新服務(wù)需求進(jìn)入隊(duì)列;否則,允許新服務(wù)需求進(jìn)入隊(duì)列。
2)找出隊(duì)列中所有高于新服務(wù)需求隊(duì)列優(yōu)先級(jí)的服務(wù)需求,然后將這些服務(wù)需求的執(zhí)行時(shí)間相加。判斷執(zhí)行時(shí)間之和是否大于任務(wù)周期。若大于,不允許新服務(wù)需求進(jìn)入隊(duì)列;否則,允許新服務(wù)需求進(jìn)入隊(duì)列[13]。
3)當(dāng)新服務(wù)需求的隊(duì)列優(yōu)先級(jí)高于第i個(gè)正在執(zhí)行的服務(wù)需求的隊(duì)列優(yōu)先級(jí),且任務(wù)i平均執(zhí)行時(shí)間與任務(wù)已經(jīng)執(zhí)行時(shí)間的差值再加上新任務(wù)執(zhí)行時(shí)間大于等于新任務(wù)的截止時(shí)間與提交時(shí)間的差值,認(rèn)為新服務(wù)需求可以搶占正在執(zhí)行的服務(wù)需求;否則,不允許新服務(wù)需求搶占[14]。
2.1.2 需求標(biāo)準(zhǔn)
在服務(wù)需求列隊(duì)之后,為其中每個(gè)服務(wù)需求向Web服務(wù)資源發(fā)送資源需求標(biāo)準(zhǔn),即完成服務(wù)需求所需要的Web服務(wù)資源量,包括CPU、內(nèi)存、TCP連接數(shù)和網(wǎng)絡(luò)帶寬等[15]。
為了提高Web服務(wù)資源分配的均衡性,通過(guò)特征信息定位可以精準(zhǔn)獲得用戶的資源需求情況,從而提高分配的有效性[16]。特征信息定位主要分為兩個(gè)環(huán)節(jié),一是Web服務(wù)資源定位,二是Web服務(wù)資源負(fù)載特征分析。下面進(jìn)行具體分析。
2.2.1 Web服務(wù)資源定位
Web服務(wù)資源定位是指確定Web服務(wù)資源的物理存儲(chǔ)位置[17]。在這里采用一種基于拓?fù)浒l(fā)現(xiàn)的定位方法,該方法具體過(guò)程如下:
步驟1:采集拓?fù)湫畔?,即遍歷網(wǎng)絡(luò)中的交換機(jī)、路由器等,獲取完整的Web服務(wù)器連接信息;
步驟2:將拓?fù)湫畔⒁约版溌反鎯?chǔ)到數(shù)據(jù)表當(dāng)中,并進(jìn)行歸一化處理;
步驟3:找出服務(wù)網(wǎng)絡(luò)中存在重疊的鏈路;
步驟4:掃描重疊鏈路兩端Web服務(wù)器的端口,判斷Web服務(wù)器之間連接鏈路的類型;
步驟5:重復(fù)上述過(guò)程,直至遍歷所有Web服務(wù)器節(jié)點(diǎn);
步驟6:完成基于拓?fù)浒l(fā)現(xiàn)的Web服務(wù)資源定位[18]。
2.2.2 Web服務(wù)資源負(fù)載特征分析
基于上述Web服務(wù)資源定位結(jié)果,對(duì)每個(gè)位置的Web服務(wù)器當(dāng)前負(fù)載特征進(jìn)行分析[19]。負(fù)載特征指數(shù)計(jì)算公式如下:
式中,Yi代表第i個(gè)服務(wù)器的負(fù)載特征指數(shù);s0代表校正系數(shù);s1、s2、s3、s4代表各指標(biāo)對(duì)應(yīng)的權(quán)值;x1代表Web服務(wù)器CPU;x2代表Web服務(wù)器內(nèi)存;x3代表Web服務(wù)器TCP連接數(shù);x4代表Web服務(wù)器網(wǎng)絡(luò)帶寬。
其中,s1、s2、s3、s4四個(gè)指標(biāo)的權(quán)值通過(guò)熵權(quán)法來(lái)確定[20]。具體過(guò)程如下。
步驟1:假設(shè)有n個(gè)Web服務(wù)器,每個(gè)服務(wù)器有4個(gè)指標(biāo),則xij為第i個(gè)Web服務(wù)器第j個(gè)指標(biāo)。
步驟2:對(duì)各個(gè)指標(biāo)進(jìn)行標(biāo)準(zhǔn)化處理,計(jì)算公式如下:
式中,代表第j個(gè)指標(biāo)的均值;var(xj)代表第j個(gè)指標(biāo)的均方差;xj代表第j個(gè)指標(biāo)。
步驟3:根據(jù)上述標(biāo)準(zhǔn)化處理后獲得的數(shù)據(jù),進(jìn)行第j個(gè)指標(biāo)在第i個(gè)Web服務(wù)器樣本中所占有的比重Rij。
步驟4:根據(jù)指標(biāo)比重的計(jì)算結(jié)果,對(duì)第j個(gè)指標(biāo)的熵值進(jìn)行計(jì)算:
式中,Gj代表第j個(gè)指標(biāo)的熵值;n代表樣本數(shù)量。
步驟5:計(jì)算信息熵冗余度。
步驟6:計(jì)算各項(xiàng)指標(biāo)的權(quán)重。
通過(guò)上述特征信息定位可以明確Web服務(wù)資源情況,為后續(xù)資源均衡分配提供了重要參考[21]。
Web服務(wù)資源均衡分配,即如何將服務(wù)需求合理分配到各個(gè)Web服務(wù)資源上,實(shí)現(xiàn)Web服務(wù)的負(fù)載均衡?;诖?,構(gòu)建一種Web服務(wù)資源均衡分配模型。該模型的關(guān)鍵是計(jì)算服務(wù)需求和Web服務(wù)資源的匹配度,計(jì)算公式如下:
式中,α代表服務(wù)需求所需要的Web服務(wù)資源量;β代表Web服務(wù)器當(dāng)前負(fù)載量,即擁有的資源量;xj代表第j個(gè)指標(biāo),x′j代表滿足服務(wù)需求的Web服務(wù)器的第j個(gè)指標(biāo)量;m代表指標(biāo)數(shù)量,在這里取值4,分別代表CPU,內(nèi)存,TCP連接數(shù)和網(wǎng)絡(luò)帶寬。
Web服務(wù)資源均衡分配過(guò)程如下。
步驟1:初始化,并設(shè)置相關(guān)參數(shù);
步驟2:從服務(wù)網(wǎng)絡(luò)中隨機(jī)選擇一個(gè)沒(méi)有任務(wù)的Web服務(wù)器資源;
步驟3:計(jì)算服務(wù)需求與Web服務(wù)器資源量的CPU,內(nèi)存,TCP連接數(shù)和網(wǎng)絡(luò)帶寬等四個(gè)指標(biāo)對(duì)應(yīng)的相似度。
步驟4:將四個(gè)對(duì)應(yīng)指標(biāo)的相似度與設(shè)定的4個(gè)閾值進(jìn)行對(duì)比,全部大于4個(gè)閾值,則進(jìn)行以下一步;否則,回到步驟3;
步驟5:按照上述式(4)計(jì)算服務(wù)需求與Web服務(wù)器資源量的總匹配度。
步驟6:判斷總匹配度是否小于設(shè)定的閾值?若小于閾值,則判定服務(wù)需求與資源之間不匹配,并回到步驟2重新選擇資源;若大于閾值,則判定服務(wù)需求與資源互相匹配。
步驟7:重復(fù)上述過(guò)程,直至隊(duì)列中所有服務(wù)需求都分配給相似度超過(guò)設(shè)定閾值的Web服務(wù)器資源,完成Web服務(wù)資源均衡分配。
服務(wù)需求與Web服務(wù)資源匹配程度越高,說(shuō)明二者之間越能達(dá)到“供需平衡”,既能實(shí)現(xiàn)Web服務(wù)資源的合理利用,又能完成用戶的訪問(wèn)需求。
基于Apache JMeter仿真平臺(tái)測(cè)試所研究分配模型以及三個(gè)對(duì)比模型(基于進(jìn)化多目標(biāo)優(yōu)化的分配模型、基于二部圖最大匹配的分配模型、基于Nginx服務(wù)器的分配模型)的應(yīng)用效果,分析分配方案的合理性。
仿真實(shí)驗(yàn)開(kāi)展所使用的環(huán)境為一個(gè)擁有15個(gè)Web服務(wù)器的集群系統(tǒng),如圖2所示。
圖2 Web服務(wù)器集群系統(tǒng)
該集群系統(tǒng)中每個(gè)Web服務(wù)器基本參數(shù)情況如表1所示。
表1 Web服務(wù)器基本參數(shù)表
選擇10個(gè)人模擬向服務(wù)器發(fā)送1000條訪問(wèn)請(qǐng)求。按照2.1章節(jié)研究將1000條訪問(wèn)請(qǐng)求組成服務(wù)需求列隊(duì),如圖3所示。
圖3 服務(wù)需求列隊(duì)
從圖3中可以看出,一級(jí)服務(wù)需求有254個(gè),二級(jí)服務(wù)需求有425個(gè),三級(jí)服務(wù)需求有321個(gè)。
按照2.2章節(jié)研究流程,計(jì)算每個(gè)Web服務(wù)器的負(fù)載特征,結(jié)果如表2所示。
表2 Web服務(wù)器負(fù)載特征
將圖3列隊(duì)中的1000條服務(wù)需求分配給Web服務(wù)器,完成Web服務(wù)資源分配,結(jié)果如圖4所示。
圖4 Web服務(wù)資源分配結(jié)果
從圖4中可以看出,Web服務(wù)器5分配到的服務(wù)需求量最多,其中二級(jí)服務(wù)占比最大,其次是服務(wù)器2、12、7、6、1/10、3/11、4/14、9、15、13、8。
相同測(cè)試條件下,利用基于進(jìn)化多目標(biāo)優(yōu)化的分配模型、基于二部圖最大匹配的分配模型、基于Nginx服務(wù)器的分配模型同樣對(duì)1000條服務(wù)需求進(jìn)行分配。并統(tǒng)計(jì)分配方案下Web服務(wù)器空閑率、負(fù)載均衡率,結(jié)果如表3所示。
從表3中可以看出,與基于進(jìn)化多目標(biāo)優(yōu)化的分配模型、基于二部圖最大匹配的分配模型、基于Nginx服務(wù)器的分配模型相比,所研究模型應(yīng)用下,Web服務(wù)器空閑率達(dá)到0.45%、負(fù)載均衡率達(dá)到90%以上,說(shuō)明所構(gòu)建模型設(shè)計(jì)的分配方案更為合理。
表3 Web服務(wù)器空閑率、負(fù)載均衡率
綜上所述,現(xiàn)代很多網(wǎng)站都是以Web服務(wù)器作為訪問(wèn)需求處理工具。隨著用戶訪問(wèn)量的逐漸增多,單個(gè)Web服務(wù)器負(fù)載壓力過(guò)大,出現(xiàn)嚴(yán)重的延遲問(wèn)題。針對(duì)這種情況,多Web服務(wù)器并行處理模式出現(xiàn),雖然極大分擔(dān)了負(fù)載壓力,但是資源均衡分配問(wèn)題隨之出現(xiàn)。針對(duì)上述問(wèn)題,構(gòu)建一種基于特征信息定位的Web服務(wù)資源均衡分配模型。該模型主要通過(guò)計(jì)算服務(wù)需求和服務(wù)資源的匹配度來(lái)設(shè)計(jì)分配方案,只有匹配度合格,才能進(jìn)行需求分配。經(jīng)過(guò)仿真實(shí)驗(yàn)測(cè)試,所構(gòu)建模型應(yīng)用下服務(wù)器空閑率更低、負(fù)載均衡率更高,證明了模型的有效性。然而,本研究?jī)H考慮小型服務(wù)器集群,當(dāng)服務(wù)器數(shù)量更大時(shí),該模型均衡分配性能可能降低,因此需要進(jìn)一步研究,使得適用于大型集群。