999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于負載預測的微服務混合自動擴展

2022-12-31 00:00:00宋程豪江凌云
計算機應用研究 2022年8期

摘要:由于邊緣云沒有比中心云更強大的計算處理能力,在應對動態負載時很容易導致無意義的擴展抖動或資源處理能力不足的問題,所以在一個真實的邊緣云環境中對微服務應用程序使用兩個合成和兩個實際工作負載進行實驗評估,并提出了一種基于負載預測的混合自動擴展方法(predictively horizontal and vertical pod autoscaling,Pre-HVPA)。該方法首先采用機器學習對負載數據特征進行預測,并獲得最終負載預測結果。然后利用預測負載進行水平和垂直的混合自動擴展。仿真結果表明,基于該方法所進行自動擴展可以減少擴展抖動和容器使用數量,所以適用于邊緣云環境中的微服務應用。

關鍵詞:邊緣云;微服務;負載預測;混合自動擴展

中圖分類號:TN929.5文獻標志碼:A

文章編號:1001-3695(2022)08-005-2273-05

doi:10.19734/j.issn.1001-3695.2022.01.0020

Hybrid autoscaling of microservices based on workload prediction

Song Chenghao,Jiang Lingyun

(College of Telecommunications amp; Information Engineering,Nanjing University of Posts amp; Telecommunication,Nanjing 210003,China)

Abstract:Since edge clouds are not more powerful than the central cloud,it is easy to lead to unexpected autoscaling or low resource processing capabilities in response to dynamic workload.Therefore,this paper used the microservice application in a real edge cloud environment to experimentally evaluate two synthesis and two actual workloads.And this paper proposed a hybrid autoscaling method based on workload prediction,which first used machine learning to carry out the workload data characteristics.After obtaining the final workload prediction result,this paper used the predictive workload for hybrid autoscaling module.The simulation shows that the microservice autoscaling policy based on this method can reduce more scaled jitter and more pod container use,and the method is scalable,so it is suitable for the microservice applications in edge cloud environment.

Key words:edge computing;microservices;workload prediction;hybrid autoscaling

在過去幾年里,云計算領域逐漸與物聯網相結合,使得邊緣云計算(multi-access edge computing,MEC)和采用微服務架構(microservice)的云端自動擴展技術逐漸成為關注的方向。邊緣云計算提供了離用戶和應用程序更近的微數據中心(micro data center, MDC)設施,這有助于克服應用程序延遲問題。微服務[1]是一種新興的體系架構,它可以將應用程序構建為多個細粒度的分布式組件的組合,這些組件可以互相交互,以服務于復雜的業務實例。如今,許多工業應用程序,尤其是邊緣云和基于物聯網的服務,都采用微服務體系架構。邊緣云平臺采用微服務架構,在帶來很多優勢的同時也存在著很多問題,例如其處理資源請求的能力就遠不如采用微服務架構的中心云。而對于處理資源請求的問題多采用微服務自動擴展進行處理,所以基于邊緣云的微服務系統所面臨的一個主要挑戰是如何在動態變化負載的請求之下,采取有效的方法進行應用程序的自動擴展,從而來降低邊緣云資源的消耗[2]。

現階段,已經有許多工具可以進行微服務的自動擴展,例如當前非常流行的容器編排管理工具Kubernetes(下文簡稱為k8s),它允許通過水平自動擴展(horizontal pod scaling,HPA)或者垂直自動擴展(vertical pod scaling,VPA)來適應應用程序部署。其中水平自動擴展允許增加和減少應用程序實例的數量,例如pod(k8s中最小的計量單位)的數量。垂直自動擴展允許增加和減少分配給每個應用程序實例的計算資源。而大多數現有的解決方案僅僅考慮了水平自動擴展[3]或者垂直自動擴展[4]中的一種。但無論采用哪種方式,其擴展所需的資源都非常多。尤其是水平自動擴展,這種擴展技術是將微服務復制到其他機器上以實現高可用性。然而單純地通過將一個微服務從一臺機器復制到另一臺機器上,并不是一個節省資源的方法,因為它的資源會在擴展時被復制。所以這種方法是貪婪的,只適用于不缺乏硬件資源的條件下[5],這顯然不適用于粒度細、資源少的邊緣云平臺。

此外,在容器級別的自動擴展中,k8s的自動擴展策略是基于閾值的[6]。這種方法在應對動態負載時會產生較多的伸縮抖動,從而產生額外的資源開銷[7]。盡管目前有一些研究對k8s的自動擴展策略進行了改進研究,采用了基于負載預測的方法,其性能相較于基于閾值的自動擴展策略獲得了一定的提升,但其方法對于處理能力較低的邊緣云平臺并不適用。此外較低的負載波動也不能很好地體現擴展的效果。

所以,針對上述問題,如何找到一種在邊緣云平臺低資源消耗,細粒度的自動擴展策略是目前研究的重難點之一。

1相關工作

目前,國內外學者已經提出了一些關于微服務自動擴展策略與算法。

文獻[8,9]皆采用基于閾值的策略,這是自動擴展最流行的方法,在k8s框架中也是如此。但是確定良好的閾值是一項具有挑戰性的工作,在容器級別上需要調整諸多的縮放參數才能確定一個最優的閾值來進行自動擴展。此外,k8s還增加了對垂直自動縮放器的支持,然而,在發布時,它仍然是一個測試性的概念,并沒有關于垂直自動擴展實現[10]的具體細節。

針對k8s所存在的問題。文獻[3]基于Q理論提出了一種新穎的算法,用于自適應和動態地調整閾值,并在滿足SLA目標時不需要用戶進行額外配置。該方法在一定程度上改進了現有水平自動擴展關于難以確定閾值的問題,但是對于變化迅速的工作負載效果則并不好。文獻[11] 利用人工神經網絡和資源優化方法來預測工作量,并用于運行在云中基礎設施上的微服務自動擴展。該方法實現了應用程序經濟有效地自動擴展。文獻[12]提出了一種窗口預測的方法,對霧中的微服務應用進行自動擴展,并改善了響應時間的SLO。文獻[13]雖然使用ARIMA模型對負載進行短期預測,相比基于閾值的自動擴展作出了改進,但是它的擴展策略仍然采用的是水平自動擴展,而單純復制pod副本這種粗粒度的水平擴展方法不適用于邊緣云平臺。上述研究的改進均聚焦于對基于閾值擴展的弊端,并沒有考慮擴展的粒度以及維度。

事實上,大多數現有的自動擴展策略仍然是水平或垂直的。文獻[14]基于強化學習提出了一種提升QoS的算法,用于改善k8s水平擴展的響應時間過長問題,并在應用程序滿足響應時間時簡化用戶的配置過程。該方法使用災難管理系統進行測試與驗證,在一定程度上改進了現有水平自動擴展響應時間的問題,但是災難管理系統帶來的工作負載過大,不適合邊緣云中的應用程序。文獻[15]提出了一個框架,該框架通過監測收集容器的資源利用率來進行自動擴展,并考慮到波動的容器數量。然而該框架采用的仍然是單維度的自動擴展方法,并沒有考慮更加細粒度的擴展策略。

到目前為止,只有部分文獻考慮將兩個擴展維度結合到容器的應用程序中。文獻[16]在更細粒度的混合自動擴展上取得了成效,并通過強化學習方法優化了響應時間。文獻[4]使用IBM自主計算的Mape-K原理進行垂直擴展,通過充分利用垂直彈性,應用程序可以通過細粒度的垂直擴展更多減少容器的使用數量,同時也可以通過水平擴展應對工作負載高峰。CloudVAMP[17]是一個為VM提供內存超額訂閱機制的平臺。內存超額訂閱允許虛擬機使用比主機可用內存更多的內存,即垂直擴展。然而CloudVAMP不支持對不同類型的負載進行擴展,從而喪失了實現更細粒度資源管理的能力。上述文獻與本文不同,本文重點考慮的是邊緣節點的微服務進行自動擴展時的資源消耗問題。

本文主要基于文獻[13,16]進行改進,對基于預測后的負載結果采取了混合自動擴展的策略,從而減少擴展的容器副本數量(pod副本數量)以及擴展抖動的次數。

2邊緣云微服務平臺部署

2.1部署框架

在邊緣云環境中,首先將中心云與邊緣云平臺的模塊進行重新配置和依賴分解,從而實現云平臺組件的容器化。然后分別在中心云和邊緣云節點安裝k8s工作負載節點。最后在完成基礎設施編排服務、k8s集群和邊緣云節點的配置后,再對云端連接組件進行定義,實現中心云數據與邊緣云計算節點之間的信息控制。在中心云與邊緣云部署k8s的實現如圖1所示。為了更好地體現本文在邊緣云的自動擴展策略,下面對當下最流行解決方案的擴展流程進行簡單闡述,并將其作為仿真的基準方案。

2.2k8s自動擴展方案

k8s作為現在最流行的容器解決方案,提供了服務發現、資源調度、監控、應用部署與自動擴展等服務。它在微服務應用程序自動擴展方面給出的解決方案是基于閾值的水平自動擴展。這種擴展策略存在兩個問題:a)采用閾值進行自動擴展時的問題在于很難確定一個良好的閾值;b)水平自動擴展的粗粒度,是在給定pod的CPU或者內存利用率(所請求相應資源數量的百分比)超過上限閾值或者低于下限時進行擴展和縮減的過程,而這個過程中,單個pod的利用率并沒有達到最優,即存在多個pod擴展和縮減后的資源沒有完全使用。

算法1Kubernetes水平自動擴展

輸入:應用負載資源請求總數Usaget;擴展閾值T;pod的資源需求值Requestt。

輸出:pod擴展的數量NumPods。

a)計算擴展與縮減閾值τ+r=T+(1+tolreance),τ-r=T+(1-tolreance),其中tolreance為默認值0.1;

b)計算資源利用率Utilization=Usager/Requestt;

c)判斷Utilizationgt;τ+r,若滿足該條件則pod數量NumPods+1,反之則NumPods-1;

d)最終統計NumPods擴展數量的結果。

k8s自動擴展算法(算法1)利用水平自動擴展來調整pod副本的數量,以滿足當前傳入的負載請求。該算法(第4章命名為Kubernetes)是根據當前資源利用率增加或減少微服務實例pod的數量。如果一個微服務及其所有副本的平均資源利用率超過某個目標百分比閾值,那系統將擴大pod副本的數量。相反,當平均資源利用率低于閾值時,系統將減少pod副本的數量。資源利用率計算為資源分配量超過請求總數。為了獲取平均資源利用率,本文設置每5 s獲取一次資源請求數量,并計算對應時刻的平均資源利用率。該策略為下文改進方案時的基準方案,其大致實現架構如圖2所示。

2.3預測式與響應式自動擴展算法的局限性

在現有文獻中,通常只是提出預測方法改進k8s的反應式擴展帶來的抖動問題,或將問題的重心放在通過改變擴展策略來優化其響應時間的違規次數。例如,本文對比預測式算法(在第4章仿真分析中命名為HPA)[13]采用了ARIMA的短期預測算法,其輸入為應用的資源利用率,輸出即為ARIMA預測自動擴展值,通過預測時間序列模型即對資源利用率進行均值化處理,并利用處理后的結果計算自相關和偏自相關函數得到結果值。這種方法存在的局限性在于它只是對導入微服務的負載采取預測,盡管在抖動的次數上取得了優化,但是提前預知并進行擴展會導致使用更多的pod數量,從而使用更多的計算資源。本文對比響應式混合自動擴展算法(在第4章命名為HVPA)[16]采用強化學習進行微服務混合自動擴展,使用基于模型的強化學習更新算法,該算法的本質是從微服務自動擴展的細粒度角度出發,通過九步轉移模型引入垂直自動擴展,從而可以更精確地擴展微服務。然而引入細粒度擴展卻導致了在擴展的過程中采取精確擴展數量為目標,而這樣會導致在負載頻繁發生改變時,微服務的pod副本也會頻繁進行擴展與縮減,從而產生了無謂的伸縮抖動,同樣不利于邊緣云的資源利用。需要注意的是,k8s方案為現有的基準方案,對于抖動次數和pod副本擴展數量這兩種指標都有待優化,而上述基于負載預測的自動擴展方案以及響應式混合自動擴展方案都只能對其中一種指標進行優化與改進。為了能在兩個指標均產生一定的優化,本文利用機器學習對兩種真實負載和兩種合成負載進行特征預測,并提出了一種混合式自動縮放算法。該算法的優勢在于結合了預測算法與混合自動擴展,能提前擴展處理變化迅速的負載,從而減少頻繁的擴展抖動;同時通過計算最大最小的副本資源,優先進行垂直擴展,更多利用單個副本的細粒度資源,完成混合式自動擴展,減少了在負載變化相對緩慢時進行擴展所使用的pod數量,最終達到整體減少資源消耗的目的。

3預測混合自動擴展算法(Pre-HVPA)

為解決自動擴展中pod資源消耗過度和伸縮抖動的問題,本文提出了一種使用機器學習進行負載預測的混合自動擴展方法。圖3是本文方法的框圖。其主要步驟如下:首先為部署在邊緣設備的微服務生成了增長型和周期型的工作負載并采集了CPU密集型負載與I/O內存密集型負載的信息;其次通過對負載信息進行劃分,使用機器學習對模型進行訓練,從而對負載信息進行預測;最后將得到的負載預測結果集成本文所提出的邊緣云k8s平臺的混合自動擴展模塊,從而獲得所需的pod數量變化以及伸縮次數的統計。

3.1部署邊緣應用

本文使用部署在邊緣云節點的設備(見4.1節實驗環境)來運行微服務應用程序,該應用程序使用基于回歸的監督機器學習算法(SVR),利用從傳感器收集的歷史日志來預測下一個時間段的溫度。這種基準測試的應用程序模擬CPU密集型以及內存密集型的工作負載,這是微服務設計的典型業務用例。例如,可以為物聯網工業應用中的數據預測、搜索算法、數字音頻/視頻內容轉換、數據壓縮任務設計通用的微服務應用。

3.2導入工作負載

為了評估所使用的預測混合自動擴展模型,本文使用了兩種合成負載和兩種真實負載。兩種合成負載分別為遞增型和周期型工作負載,并用于模擬應用程序的常規負載變化情況。當應用程序的大多數用戶開始訪問服務時,通常都會觀察到負載的持續增加。對于周期型負載在實際的應用程序中也是非常常見的,并且會在持續的時間內符合周期性變化。

首先通過初始化固定的請求數量M(t0),然后以每分鐘固定的增長率Δq增加工作負載,具體計算如式(1)所示。

M(t)=M(t0)+(t-1)Δq+rc rand(Euclid Math TwoNAp(0,1))(1)

其中:設定M(t0)=100,Δq=60,rc=30。式(1)代表在120 min M(t)的請求總數。

為生成周期型的工作負載,本文使用了一個周期為λ,振幅為α,初始偏置因子為U(t0)的正弦函數。具體計算為

U(t)=U(t0)+α(2tπλ)+rc rand(Euclid Math TwoNAp(0,1))(2)

其中:設定U(t0)=3 500,α=2 500,λ=50來生成周期型工作負載。

關于兩種真實負載主要使用了已公開的阿里云天池2020混合云的工作負載跟蹤來模擬真實世界的工作負載情況。其中包括CPU計算密集型負載與I/O內存密集型負載。

3.3對負載數據進行訓練、機器學習模塊

本文利用四種工作負載的數據集,對五種不同的線性回歸模型進行訓練,對比不同的預測模型(包括線性回歸模型LR[18]、彈性網模型EN[19]、多項式回歸模型PR[20]、XGBoost模型 XGB[21]、決策樹模型DTR[22])所產生的MSE(均方誤差),從而評估對本文預測的準確性,并最終選取測試數據MSE最小的機器學習方法作為本文提出的混合自動擴展模型的學習算法。MSE的計算方法為

MSE=1m∑mi=1(yi-i)2(3)

該參數可以反映估計值與真實值的差異程度,其中m表示樣本數量,yi表示真實值,i表示預測值。通過評估后的MSE結果如表1所示。經過10次測試,分別取七種方法的MSE平均值后可以看出,BR機器學習方法對LR、EN、PR、DTR、XGB有88.5%、85.9%、83.8%、63.2%、38.1%的改善。為提升混合自動擴展所得結果的準確性,選取預測負載更好的模型非常重要。所以本文選取BR為最終的機器學習算法。

3.4混合自動擴展算法

將上面訓練好的機器學習模型以及對預測后的工作負載數據輸入到本文所提出的混合自動縮放模塊,進行自動擴展。

本文所提出的混合自動擴展算法主要目標是在微服務之間保持一種高可用性、低消耗性。每個邊緣節點以高資源利用率的方式來動態的擴展資源。一些微服務傾向于使用k8s進行有效的擴展,然而這會導致更多的資源消耗。所以水平自動擴展并不是總是最佳的解決方案,因為擴展一個新的副本實例(pod容器)會需要更多的資源。此外,在進行混合自動擴展時,仍然需要保持水平自動擴展微服務的狀態,因為它需要一個一致性的模型來維護所有副本之間的狀態。所以在水平擴展不適用的場景中,最好的擴展策略是能為特定的pod容器帶來更多的資源,即垂直自動擴展。本文所提混合自動擴展算法與只進行粗粒度水平擴展不同,并不是單純地進行pod的復制,而是能確定精確的微服務需求,在保留粗粒度水平自動擴展的同時,加入了所需要的細粒度調整。這將大幅度減少復制pod容器的數量,從而減少邊緣云節點的資源浪費。

本文的混合自動擴展對不同的負載類型使用不同的擴展度量標準。對于CPU密集型負載本文采取由請求數量計算所得的CPU利用率,而內存密集型則以內存利用率為度量,為更好地將不同的負載進行同等量化,后續一致以相應負載的資源請求數量(資源利用率)進行衡量。算法2以CPU密集型負載為例進行闡述。

算法2混合自動擴展算法

輸入:預測后的負載資源Usagepre;pod需求資源Requestt;pod的目標資源利用率Target。

輸出:pod擴展的數量NumPods;擴展與縮減次數T。

a)初始化:Maxnum=10,Minnum=1,time=120;

b)對觀察時間內的資源情況Usagepre進行遍歷,判斷資源當前資源利用率與目標利用率的關系,從而確定現有資源分配是否可進行垂直擴展;

c)while true do

d)if sum(Usagepre)==(sum(Requestt)×Target)

//總體資源分配等于目標利用率

e)擴展策略不更改,進行水平擴展,最大擴展至Maxnum

f)else if sum(Usagepre)gt;(sum(Requestt)×Target)

//總體資源分配大于目標利用率,算法進行資源擴展階段

g)CPUup==sum(Usagepre)Target×0.9-Requestt,NumPodsup

//首先將每個pod副本嘗試向上垂直擴展,然后執行水平擴展

h)else//總體資源分配小于目標利用率,算法進入資源回收階段

i)NumPodsdown,CPUdown==Requestt-sum(Usagepre)Target×0.9

/*首先將pod副本水平縮減,然后將每個pod嘗試向下垂直擴展,最低將pod數量縮減為Minnum*/

j)end

k)for i in range(0,time)

l)sumNumPods=sumNumPods+Numpods[i]

m)end

n)統計pod副本的擴展結果

當將預測后的負載導入混合縮放模塊后,算法首先判斷總體的分配資源與目標利用率的關系,決定是優先執行水平自動擴展或者垂直自動擴展。如果資源大于目標值時可以優先進行垂直自動擴展,提升每個pod的資源使用率,從而在減少水平擴展數量的同時,依然可以滿足資源的請求。當資源請求減小時,資源首先進行水平縮減,對pod進行回收,再進行垂直縮減,可以最大程度減少pod的使用數量,達到減少資源的消耗目的。

此外,由于輸入的是預測負載,所以在進行自動擴展提供了一定的預測性,即可以在已知未來一段時間資源請求的情況下提前進行自動擴展,避免了許多無意義的擴展,降低了擴展抖動的次數,使得pod副本數量變化更為平滑。

4仿真

4.1實驗環境

本文使用了一個部署在邊緣云中的Kubernetes集群來測試所提出的混合自動擴展模型,該集群包括了四臺物理機器,分別搭建了版本互相兼容的Docker和Kubernetes,其詳細機器配置以及集群的版本信息如表2所示。

4.2負載預測結果分析

為更好地驗證預測模型,本文采用十折交叉驗證法對所有的工作負載數據進行隨機劃分,以此生成訓練集和測試集,其中10%的數據作為測試集,90%的數據作為訓練集。之所以采用該驗證方法是因為通過大量實驗表明,十等分數據可以獲得最優誤差估計。

圖4顯示了實驗評估的四種不同類型的工作負載在120 min內進行預測后的結果,其中圖4(c)與圖4(d)分別為CPU密集型工作負載預測結果和I/O內存密集型工作負載預測結果。可以看出,內存密集型負載的請求密度與請求總數均低于CPU密集型負載,這是因為內存密集型計算任務相對較少。與兩種密集型負載相比,圖4(a)增長型與圖4(b)周期型負載顯示出了更好的預測結果,這是由于任何的機器學習估計方法都難以非常好地處理學習的突發過程,然而對于這種較難預測的突發密集型負載[23,24],本文所采用的預測方法已經產生了相對較好的結果。所以將預測更好的負載導入本文混合自動擴展模塊時,可以獲得更精確的自動擴展結果。

4.3自動擴展結果分析

在本節中將介紹使用的k8s基于閾值水平自動擴展方法,基于負載預測的水平自動擴展方法和基于閾值的反應式混合自動擴展方法。并將本文提出的預測混合自動擴展結果與這些方法在處理遞增型、周期型、CPU密集型負載和內存密集型負載時的自動擴展結果進行對比分析。

4.3.1CPU密集型負載結果分析

k8s的基礎方案是基于閾值的水平自動擴展,該方法屬于反映式的自動擴展策略,當任意pod容器的資源利用率大于用戶自定義的擴展閾值(通常k8s方案設定為75%)時,系統會動態向微服務中添加pod容器副本。類似地,當所有容器的資源利用率小于縮減閾值(通常k8s方案設定為50%)時,系統會從已分配的pod容器副本中動態將其移除。通過添加額外的容器,k8s方案也可以適當地恢復應用程序的性能。但是從圖5(a)可以觀察到,在面對CPU密集型負載這類計算任務大,變換迅速的負載時,這種方案產生了額外的擴展抖動和使用更多pod副本數量的資源開銷。所以本文提出的預測混合自動擴展(Pre-HVPA)方法采用負載預測對CPU密集型負載進行特征預測,能更好地適應這類動態變化負載,并且采用細粒度的混合自動擴展,以更精確的資源預測和資源需求計算,獲得了比現有最流行的自動擴展方案更良好的結果。

圖5(b)的HPA方案是現有文獻對k8s方案的改進,該方案針對其反應式擴展的弊端,采用了提取CPU密集型負載特征來進行預測的方法,提前作出擴展并改善擴展抖動的問題。但是單純采用預測負載來進行水平自動擴展,會導致使用更多的pod副本數量。可以看到本文方案可以在提前擴展且減少擴展抖動的同時,使用了盡可能少的pod副本數量。可以從圖中看出,在20~50 min時間段內以及70~80 min的時間段內,本文在預測負載的基礎上引入的混合自動擴展策略使用了比水平自動擴展策略更少的pod副本數量。

圖5(c)是與現有提出的基于閾值的反應式混合擴展方案(HVPA)的對比,這種方案在進行擴展時會以最小化數量為目標,而不考慮擴展的抖動,與本文策略相比,在0~40 min這段時間,因為對負載變化的進行提前預測,本文預測的混合自動擴展使用了與反應式混合擴展相近的pod副本數量,減少了2次無意義的擴展抖動。此外,在60 min負載急劇提升前,本文策略會提前作出擴展決策,也減少了2次無謂擴展,使用盡可能少的pod副本數量來使擴展更為平滑穩定。

4.3.2內存密集型負載結果分析

對于更好地印證本文的擴展策略,同樣衡量了不同類型的負載,即內存密集型負載。這種負載相對于CPU密集型負載而言,請求數量相對較少且變化也相對緩慢,同樣是有代表意義的一種測試負載類型。

圖6(a)顯示本文提出的擴展策略在應對內存密集型負載時得擴展結果,首先可以看到,k8s方案在應對內存密集型負載時的擴展結果相對于CPU密集型變換較為緩慢。即伸縮次數更少,且整體使用的pod副本數量更少。盡管如此,在對這種負載時,本文的預測混合擴展策略仍然體現了較好的優勢,在80~100 min期間的優勢尤為明顯,通過提前預測負載變化,減少了5次的無意義伸縮抖動,同時也通過更精確的細粒度擴展減少了pod副本數量。對于整體的pod副本數量會在4.4節給予更詳細的評估。此處不再贅述。

對于HPA和HVPA方案,圖6(b)(c)均給出了結果對比,同樣在60 min左右負載突然增加時,完成了提前的擴展并且相對于其他方案在整體的資源使用上更少,即使用了更少的pod副本數量。

4.3.3周期型負載結果分析

在應對周期型負載時,由于其變化的規律性是一種比較理想的狀態,所以對負載的預測可以更為精確,從而能更準確地計算出資源的請求,提前進行混合自動擴展策略的部署,實現以更少資源完成擴展的目標。

圖7(a)可以看出,相比k8s方案時,在10~30 min時可以提前進行資源的回收,同時在40~60 min進行擴展時,能用相對較多的pod副本數量來進行提前擴展,減少抖動次數。

圖7(b)(c)分別是本文策略與預測式水平自動擴展和混合自動擴展的對比結果。可以看到,相比單純采用預測的擴展方案,本文的策略會使用更少的pod副本數量,而對于單純采用混合擴展策略的方案擴展的次數更少,即會產生更少的擴展抖動。

此外,還有一種增長型的負載測試結果,與上述不同負載的情況大致相同,此處不再過多分析,其擴展結果將會在4.4節對整體系統評估時予以說明。

4.4系統性能評估

本節將對上述四種負載的擴展結果從擴展次數與pod使用數量進行評估與分析。圖8顯示了四種擴展方案在應對不同類型負載時產生的擴展抖動。可以看出,本文的Pre-HVPA策略在應對四種負載時擴展抖動的次數比k8s、HPA和HVPA方案少,其中增長型負載對k8s和HVPA方案分別改善了40%與20%,周期型負載對HVPA方案改善了8.5%,CPU密集型負載對三種方案分別改善了37.2%、18.2%、32.5%;內存密集型負載分別對三種方案改善了18.8%、7.1%、25.7%。

圖9是對120 min內擴展pod副本數量進行衡量的結果。可以看出,本文策略相較于k8s、HPA和HVPA方案有明顯的改善,其中面對增長型負載對k8s和HPA方案分別改善了9.4%、8.4%,周期型負載對于三種方案則分別改善了9.6%、11.4、2.1%,CPU密集型負載對k8s和HPA方案分別改善了9.5%、8.8%,內存密集型負載分別對k8s和HPA方案改善了12.4%、14.7%。

在應對增長型負載時,本文的擴展策略相對于HPA方案多產生1次的擴展抖動,減少了9.4%pod副本使用數量;對于周期型負載,本文策略以與k8s方案相同的擴展抖動,減少了9.6%的pod使用數量;對于CPU密集型負載,所提方案相對于HVPA方案,以犧牲2.1%的pod數量,減少了13次無謂的擴展抖動;而對于內存密集型負載,則以犧牲2.5%的pod數量減少了9次無意義的擴展抖動。

以上是對邊緣云環境下的基于負載預測的微服務混合自動擴展策略的仿真結果分析。從系統的綜合性能來看,無論是從擴展抖動的性能改善還是pod副本的使用數量的性能改善,所采用的預測式混合自動擴展模型都取得了更好的擴展結果。

5結束語

現有微服務自動擴展方案大多是部署在中心云的,為邊緣云的微服務容器進行資源消耗更少的自動擴展是一項挑戰。在本文中提出了一種新的算法,用于為部署在邊緣云的微服務工業應用程序確定一種更為經濟有效的自動擴展策略。與當前流行的多種方案相比,取得了在擴展次數和擴展pod容器的副本數量上的優化,具有更好的性能。本文方法使用MSE最小的監督機器學習方法對多種類型的負載進行預測,并將預測后的負載導入本文設計的混合自動擴展模塊完成擴展工作,并使用了兩種密集型負載和兩種合成負載進行實驗評估。結果表明,對于兩種指標本文策略取得了整體優化。本文的研究內容是一個階段性成果,在接下來的研究中,本文將嘗試使用不同的應用程序來對所提出的模型進行測試,此外對于邊緣云的微服務自動擴展而言,如何降低擴展的響應時間,從而減少用戶的使用成本也是值得研究的方向之一。

參考文獻:

[1]Taibi D,Lenarduzzi V,Pahl C.Processes,motivations,and issues for migrating to microservices architectures:an empirical investigation[J].IEEE Cloud Computing,2017,4(5):22-32.

[2]Pan J,McElhannon J.Future edge cloud and edge computing for Internet of Things applications[J].IEEE Internet of Things Journal,2018,5(1):439-449.

[3]Horovitz S,Arian Y.Efficient cloud auto-scaling with SLA objective using Q-learning[C]//Proc of the 6th IEEE International Conference on Future Internet of Things and Cloud.Piscataway,NJ:IEEE Press,2018:85-92.

[4]Dhuraibi Y,Paraiso F,Djarallah N,et al.Autonomic vertical elasticity of Docker containers with ElasticDocker[C]//Proc of the 10th IEEE International Conference on Cloud Computing.Piscataway,NJ:IEEE Press,2017:472-479.

[5]Wilder B.Cloud architecture patterns:using Microsoft Azure[M].[S.l.]:O’Reilly,2012.

[6]Lin K,Altaf U,Jayaputera G,et al.Auto-scaling a defence application across the cloud using Docker and Kubernetes[C]//Proc of IEEE/ACM International Conference on Utility and Cloud Computing Companion.Piscataway,NJ:IEEE Press,2018:327-334.

[7]單朋榮,楊美紅,趙志剛,等.基于Kubernetes云平臺的彈性伸縮方案設計與實現[J].計算機工程,2021,47(1):312-320.(Shan Pengrong,Yang Meihong,Zhao Zhigang,et al.Design and implementation of elastic scaling scheme based on Kubernetes cloud platform[J].Journal of Computer Engineering,2021,47(1):312-320.)

[8]Nitto E,Florio L,Tamburri D.Autonomic decentralized microservices:the Gru approach and its evaluation[M]//Antonio B,Nicola D,Schahyam D,et al.Microservices:Science and Engineering.Berlin:Sprin-ger,2020:209-248.

[9]Nardelli M,Hochreiner C,Schulte S.Elastic provisioning of virtual machines for container deployment[C]//Proc of ACM/SPEC International Conference on Performance Engineering.New York:ACM/SPEC,2017:5-10.

[10]Sembiring K,Beyer A.Dynamic resource allocation for cloud-based media processing[C]//Proc of the 23rd ACM Workshop on Network and Operating Systems Support for Digital Audio and Video.New York:ACM Press,2013:49-54.

[11]Prachitmutita I,Aittinonmongkol W,Pojjanasuksakul N,et al.Auto-scaling microservices on IaaS under SLA with cost-effective framework[C]//Proc of the 10th International Conference on Advanced Computational Intelligence.Piscataway,NJ:IEEE Press,2018:583-588.

[12]Lombardi F,Muti A,Aniello L,et al.PASCAL:an architecture for proactive auto-scaling of distributed services[J].Future Generation Computer Systems,2019,98:342-361.

[13]馬小淋.一種基于負載特征預測的容器云彈性伸縮策略[J].信息安全研究,2019,5(3):236-241.(Ma Xiaolin.A container cloud elastic scaling strategy based on load characteristics prediction[J].Journal of Information Security Research,2019,5(3):236-241.)

[14]Khaleq A,Ra I.Intelligent autoscaling of microservices in the cloud for real-time applications[J].IEEE Access,2021,9:35464- 35476.

[15]Tang Xuxin,Zhang Fan,Li Xiu,et al.Quantifying cloud elasticity with container-based autoscaling[J].Future Generation Computer Systems,2019,98:672-681.

[16]Rossi F,Nardelli M,Cardellini V.Horizontal and vertical scaling of container-based applications using reinforcement learning[C]//Proc of the 12th IEEE International Conference on Cloud Computing.Piscataway,NJ:IEEE Press,2019:329-338.

[17]Germán M,Miguel C,Carlos A.Automatic memory-based vertical elasticity and oversubscription on cloud platforms[J].Future Generation Computer Systems,2016,56:1-10.

[18]Olive D J,Linear regression[M].Berlin:Springer,2017.

[19]Zhang Zheng,Lai Zhihui,Xu Yong,et al.Discriminative elastic-net regularized linear regression[J].IEEE Trans on Image Proces-sing,2017,26(3):1466-1481.

[20]Igual L,Seguí S.Introduction to data science:regression analysis[M].Berlin:Springer,2017:97-114.

[21]Chen Tianqi,Guestrin C.XGBoost:a scalable tree boosting system[C]//Proc of the 22nd ACM Knowledge Discovery and Data Mining.New York:ACM Press,2016:785-794.

[22]Rathore S,Kumar S.A decision tree regression based approach for the number of software faults prediction[J].ACM SIGSOFT Software Engineering Notes,2016,41(1):1-6.

[23]Ali-Eldin A,Seleznjev O,Sjstedt-de L S,et al.Measuring cloud workload burstiness[C]//Proc of the 7th IEEE/ACM International Conference on Utility amp; Cloud Computing.Piscataway,NJ:IEEE Press,2014:566-572.

[24]Ilyushkin A,Ali-Eldin A,Herbst N,et al.An experimental perfor-mance evaluation of autoscalers for complex workflows[J].ACM Trans on Modeling and Performance Evaluation of Computing Systems,2018,3(2):1-32.

收稿日期:2022-01-05;修回日期:2022-03-11基金項目:江蘇省重點研發項目(BE2020084-4)

作者簡介:宋程豪(1997-),男,山東淄博人,碩士研究生,主要研究方向為云計算和微服務自動擴展;江凌云(1971-),女(通信作者),安徽安慶人,副教授,碩導,碩士,主要研究方向為下一代網絡(jiangly@njupt.edu.cn).

主站蜘蛛池模板: 亚洲人成高清| 噜噜噜久久| 国产91视频免费观看| 亚洲人成人伊人成综合网无码| 综合人妻久久一区二区精品| 亚洲性一区| 中国精品久久| 午夜啪啪福利| 2020国产精品视频| a天堂视频| 欧美精品在线看| a天堂视频| 久久无码免费束人妻| 国产精女同一区二区三区久| 粗大猛烈进出高潮视频无码| 国产成人高精品免费视频| 亚洲欧美成人影院| 国产成人一区免费观看| 日韩一区精品视频一区二区| 国产一级妓女av网站| 久久一本日韩精品中文字幕屁孩| 国产一区二区三区在线精品专区 | 久久国产黑丝袜视频| 亚洲日韩每日更新| 国产女人在线| 成人av手机在线观看| 国内精品视频在线| 欧美日韩91| 国产成人精品高清不卡在线| 亚洲AV无码一区二区三区牲色| 999福利激情视频| 久久婷婷五月综合97色| 欧洲欧美人成免费全部视频| 欧美亚洲综合免费精品高清在线观看| 国产一级在线观看www色| 久久午夜夜伦鲁鲁片无码免费| 毛片网站免费在线观看| 2021天堂在线亚洲精品专区| 国产激情无码一区二区三区免费| 国产中文在线亚洲精品官网| 久久久久亚洲精品无码网站| 亚洲浓毛av| 亚洲中文精品人人永久免费| 亚洲男人天堂2018| 久久亚洲日本不卡一区二区| 久久精品国产亚洲麻豆| 91最新精品视频发布页| 欧美高清国产| 国产亚洲男人的天堂在线观看| 国模视频一区二区| 98精品全国免费观看视频| 无码久看视频| 国产综合亚洲欧洲区精品无码| 五月天综合婷婷| 一级毛片无毒不卡直接观看 | 992Tv视频国产精品| 经典三级久久| Aⅴ无码专区在线观看| 国产资源站| 免费精品一区二区h| 妇女自拍偷自拍亚洲精品| 亚洲午夜久久久精品电影院| 国产成人高清精品免费| 又爽又大又黄a级毛片在线视频| 亚洲国产91人成在线| 色精品视频| 日韩精品高清自在线| 91精品国产无线乱码在线| 性色在线视频精品| 国产成人a在线观看视频| 国产情精品嫩草影院88av| 成年免费在线观看| 色婷婷狠狠干| 996免费视频国产在线播放| 国产成人h在线观看网站站| 呦视频在线一区二区三区| 国产香蕉在线视频| 一级毛片免费不卡在线视频| 久久人妻xunleige无码| 青青操国产| 亚洲男人的天堂在线观看| 国产h视频在线观看视频|