楊柳青 王 沖
(1.玉林師范學院教育技術中心 玉林 537000)(2.桂林電子科技大學商學院 桂林 541004)
互聯網的普及與發展,以及用戶服務需求的持續提升,導致互聯網中的數據呈指數形式遞增[1]。為滿足海量用戶的訪問需要,各種各樣的網站層出不窮。然而,面對日益增長的用戶訪問量,遠遠超過了網站單個Web服務器的所能承受的能力,因此發展到現在,一個網站的Web服務器并不是只有一個,往往是多個,甚至是十幾,幾十個,并且仍處在不斷增加的狀態,以滿足海量用戶每時每刻的訪問請求[2]。在這種背景下,Web服務資源分配成為日漸突出的一個問題,例如經常出現訪問請求“扎堆”的現象,即服務資源并不能合理的被分配,用于處理訪問請求,可能導致多個訪問請求聚集到一個高性能的服務資源上,造成該服務資源繁忙,服務時延問題驗證,而有的服務資源未能分配到訪問請求,導致服務資源處于“饑餓、閑置”狀態,造成服務資源浪費[3]。
面對這種情況,對Web服務資源分配成為相關領域研究的熱點問題。很多專家和學者都提出了解決方法,例如,文獻[4]提出基于進化多目標優化的分配模型,通過資源空閑率、存儲資源的空閑率、微服務的實際空閑率以及負載均衡率組成多目標函數,然后設置四個約束條件,最后利用NSGA-III和MOEA/D組合進化算法求解,得出微服務組合分配方案。文獻[5]提出基于二部圖最大匹配的分配模型,首先獲取服務器所要處理的訪問量與訪問處理耗時之間的比值,并以此作為負載指標,將其反饋給管理服務器,然后構建二部圖。以構建的二部圖為基礎,采用匈牙利算法求解二部圖的并獲得最大匹配結果,根據匹配結果進行資源的分配。文獻[6]提出基于Nginx服務器的分配模型,首先采集服務資源的負載數據,然后負載均衡器通過計算找到最優節點服務器,然后將訪問任務通過動態負反饋調度算法將其分配給轉發節點,完成資源的均衡調度。文獻[7]研究一種大型集群環境中的資源可擴展性分配方法,構建資源分配的決策框架,結合動態填充決策的方式,以對資源的需求目標進行分析。最后,根據資源的需求特征,進行資源的適應性分配。文獻[8]提出一種基于分層DRL的高效資源分配方法,該方法研究分層強化學習資源分配框架,以解決資源分配的功耗問題,并借助時間尺度確定資源分配的最優解,以實現資源的高效分配。
結合當前研究經驗,本文研究一種基于特征信息定位的Web服務資源均衡分配模型,并通過實驗對所構建模型的性能進行驗證,結果表明所構建模型可以在提高資源利用率的基礎上,降低服務時延,改善Web服務質量。
每個用戶登錄網站的目的是獲取資源,而資源在獲取前需要用戶發送訪問請求,根據請求Web服務器搜索資源,最后將其反饋給用戶。由此可知,Web服務需求指的是用戶訪問請求,也可以稱為訪問任務。用戶要訪問的資源不同,產生的服務需求相應地也存在差異?;谏鲜霰尘?,如何進行服務需求列隊,并根據自身需求,向Web服務資源發送資源需求標準至關重要,是后續資源分配的重要參考[9]。下面針對上述兩個方面進行具體分析。
2.1.1 服務需求列隊
服務需求列隊的標準有很多,如用戶請求時間、用戶求取長度等,但是這些列隊標準并沒有將訪問需要的重要性或緊急性考慮在內,因此可能會降低任務完成的實時性,從而影響Web服務器的整體工作質量[10]。針對這種情況,本章節基于任務重要性或緊急性判斷任務隊列優先級,以此組建服務需求列隊。該隊列分為三級,如圖1所示。

圖1 服務需求列隊模型
圖1中,最上邊的一級服務需求按照時限因子進行排隊,用戶訪問任務的時限因子越短,認為該服務需求越緊急,越需要排在隊列前[11]。第二級服務需求按照進入隊列先后順序的規則進行排隊。第三級的服務需求則是按照優先級先后順序進行排隊,優先級水平越高隊列越靠前,即允許服務需求搶占隊列位置[12]。搶占策略如下:
1)當有新服務需求時,若新服務需求的隊列優先級與第i個服務需求的隊列優先級相等,且新服務需求的編號與第i個服務需求的編號也相同,則不允許新服務需求進入隊列;否則,允許新服務需求進入隊列。
2)找出隊列中所有高于新服務需求隊列優先級的服務需求,然后將這些服務需求的執行時間相加。判斷執行時間之和是否大于任務周期。若大于,不允許新服務需求進入隊列;否則,允許新服務需求進入隊列[13]。
3)當新服務需求的隊列優先級高于第i個正在執行的服務需求的隊列優先級,且任務i平均執行時間與任務已經執行時間的差值再加上新任務執行時間大于等于新任務的截止時間與提交時間的差值,認為新服務需求可以搶占正在執行的服務需求;否則,不允許新服務需求搶占[14]。
2.1.2 需求標準
在服務需求列隊之后,為其中每個服務需求向Web服務資源發送資源需求標準,即完成服務需求所需要的Web服務資源量,包括CPU、內存、TCP連接數和網絡帶寬等[15]。
為了提高Web服務資源分配的均衡性,通過特征信息定位可以精準獲得用戶的資源需求情況,從而提高分配的有效性[16]。特征信息定位主要分為兩個環節,一是Web服務資源定位,二是Web服務資源負載特征分析。下面進行具體分析。
2.2.1 Web服務資源定位
Web服務資源定位是指確定Web服務資源的物理存儲位置[17]。在這里采用一種基于拓撲發現的定位方法,該方法具體過程如下:
步驟1:采集拓撲信息,即遍歷網絡中的交換機、路由器等,獲取完整的Web服務器連接信息;
步驟2:將拓撲信息以及鏈路存儲到數據表當中,并進行歸一化處理;
步驟3:找出服務網絡中存在重疊的鏈路;
步驟4:掃描重疊鏈路兩端Web服務器的端口,判斷Web服務器之間連接鏈路的類型;
步驟5:重復上述過程,直至遍歷所有Web服務器節點;
步驟6:完成基于拓撲發現的Web服務資源定位[18]。
2.2.2 Web服務資源負載特征分析
基于上述Web服務資源定位結果,對每個位置的Web服務器當前負載特征進行分析[19]。負載特征指數計算公式如下:

式中,Yi代表第i個服務器的負載特征指數;s0代表校正系數;s1、s2、s3、s4代表各指標對應的權值;x1代表Web服務器CPU;x2代表Web服務器內存;x3代表Web服務器TCP連接數;x4代表Web服務器網絡帶寬。
其中,s1、s2、s3、s4四個指標的權值通過熵權法來確定[20]。具體過程如下。
步驟1:假設有n個Web服務器,每個服務器有4個指標,則xij為第i個Web服務器第j個指標。
步驟2:對各個指標進行標準化處理,計算公式如下:

式中,代表第j個指標的均值;var(xj)代表第j個指標的均方差;xj代表第j個指標。
步驟3:根據上述標準化處理后獲得的數據,進行第j個指標在第i個Web服務器樣本中所占有的比重Rij。
步驟4:根據指標比重的計算結果,對第j個指標的熵值進行計算:

式中,Gj代表第j個指標的熵值;n代表樣本數量。
步驟5:計算信息熵冗余度。
步驟6:計算各項指標的權重。
通過上述特征信息定位可以明確Web服務資源情況,為后續資源均衡分配提供了重要參考[21]。
Web服務資源均衡分配,即如何將服務需求合理分配到各個Web服務資源上,實現Web服務的負載均衡?;诖?,構建一種Web服務資源均衡分配模型。該模型的關鍵是計算服務需求和Web服務資源的匹配度,計算公式如下:

式中,α代表服務需求所需要的Web服務資源量;β代表Web服務器當前負載量,即擁有的資源量;xj代表第j個指標,x′j代表滿足服務需求的Web服務器的第j個指標量;m代表指標數量,在這里取值4,分別代表CPU,內存,TCP連接數和網絡帶寬。
Web服務資源均衡分配過程如下。
步驟1:初始化,并設置相關參數;
步驟2:從服務網絡中隨機選擇一個沒有任務的Web服務器資源;
步驟3:計算服務需求與Web服務器資源量的CPU,內存,TCP連接數和網絡帶寬等四個指標對應的相似度。
步驟4:將四個對應指標的相似度與設定的4個閾值進行對比,全部大于4個閾值,則進行以下一步;否則,回到步驟3;
步驟5:按照上述式(4)計算服務需求與Web服務器資源量的總匹配度。
步驟6:判斷總匹配度是否小于設定的閾值?若小于閾值,則判定服務需求與資源之間不匹配,并回到步驟2重新選擇資源;若大于閾值,則判定服務需求與資源互相匹配。
步驟7:重復上述過程,直至隊列中所有服務需求都分配給相似度超過設定閾值的Web服務器資源,完成Web服務資源均衡分配。
服務需求與Web服務資源匹配程度越高,說明二者之間越能達到“供需平衡”,既能實現Web服務資源的合理利用,又能完成用戶的訪問需求。
基于Apache JMeter仿真平臺測試所研究分配模型以及三個對比模型(基于進化多目標優化的分配模型、基于二部圖最大匹配的分配模型、基于Nginx服務器的分配模型)的應用效果,分析分配方案的合理性。
仿真實驗開展所使用的環境為一個擁有15個Web服務器的集群系統,如圖2所示。

圖2 Web服務器集群系統
該集群系統中每個Web服務器基本參數情況如表1所示。

表1 Web服務器基本參數表
選擇10個人模擬向服務器發送1000條訪問請求。按照2.1章節研究將1000條訪問請求組成服務需求列隊,如圖3所示。

圖3 服務需求列隊
從圖3中可以看出,一級服務需求有254個,二級服務需求有425個,三級服務需求有321個。
按照2.2章節研究流程,計算每個Web服務器的負載特征,結果如表2所示。

表2 Web服務器負載特征
將圖3列隊中的1000條服務需求分配給Web服務器,完成Web服務資源分配,結果如圖4所示。

圖4 Web服務資源分配結果
從圖4中可以看出,Web服務器5分配到的服務需求量最多,其中二級服務占比最大,其次是服務器2、12、7、6、1/10、3/11、4/14、9、15、13、8。
相同測試條件下,利用基于進化多目標優化的分配模型、基于二部圖最大匹配的分配模型、基于Nginx服務器的分配模型同樣對1000條服務需求進行分配。并統計分配方案下Web服務器空閑率、負載均衡率,結果如表3所示。
從表3中可以看出,與基于進化多目標優化的分配模型、基于二部圖最大匹配的分配模型、基于Nginx服務器的分配模型相比,所研究模型應用下,Web服務器空閑率達到0.45%、負載均衡率達到90%以上,說明所構建模型設計的分配方案更為合理。

表3 Web服務器空閑率、負載均衡率
綜上所述,現代很多網站都是以Web服務器作為訪問需求處理工具。隨著用戶訪問量的逐漸增多,單個Web服務器負載壓力過大,出現嚴重的延遲問題。針對這種情況,多Web服務器并行處理模式出現,雖然極大分擔了負載壓力,但是資源均衡分配問題隨之出現。針對上述問題,構建一種基于特征信息定位的Web服務資源均衡分配模型。該模型主要通過計算服務需求和服務資源的匹配度來設計分配方案,只有匹配度合格,才能進行需求分配。經過仿真實驗測試,所構建模型應用下服務器空閑率更低、負載均衡率更高,證明了模型的有效性。然而,本研究僅考慮小型服務器集群,當服務器數量更大時,該模型均衡分配性能可能降低,因此需要進一步研究,使得適用于大型集群。