劉 佳,王 冰,王 琛,劉振博
(1.中鐵信弘遠(yuǎn)(北京)軟件科技有限責(zé)任公司,北京 100844;2.中國(guó)鐵路信息科技集團(tuán)有限公司,北京 100844)
云計(jì)算自興起以來(lái),因其高效的資源管理、較低的經(jīng)濟(jì)成本、靈活的可擴(kuò)展性等優(yōu)勢(shì)而受到廣泛關(guān)注,已成為數(shù)字經(jīng)濟(jì)的基礎(chǔ)設(shè)施和“互聯(lián)網(wǎng)+”時(shí)代的重要支撐[1]。為保障云平臺(tái)的高可用性和穩(wěn)定性,通常采取彈性伸縮策略,根據(jù)實(shí)際負(fù)載情況來(lái)動(dòng)態(tài)調(diào)整應(yīng)用的資源配額[2]。如主流容器編排平臺(tái)Kubernetes 采用響應(yīng)式伸縮策略實(shí)現(xiàn)容器的水平伸縮,通過(guò)內(nèi)部伸縮控制器周期性地輪詢監(jiān)控應(yīng)用的負(fù)載狀態(tài),并根據(jù)處理器、內(nèi)存等資源指標(biāo)的閾值規(guī)則進(jìn)行動(dòng)態(tài)調(diào)整資源分配[3]。這種基于閾值規(guī)則的響應(yīng)式伸縮策略原理簡(jiǎn)單,是一種根據(jù)閾值規(guī)則觸發(fā)的彈性伸縮方法,閾值標(biāo)準(zhǔn)依賴于用戶經(jīng)驗(yàn),存在指標(biāo)設(shè)定困難、彈性滯后等問(wèn)題[4]。
相較于傳統(tǒng)響應(yīng)式伸縮方式,主動(dòng)式伸縮具有更強(qiáng)的主動(dòng)性和智能性,可以有效提升資源利用率和服務(wù)質(zhì)量。主動(dòng)式伸縮策略的原理是根據(jù)歷史負(fù)載數(shù)據(jù)建立預(yù)測(cè)模型,預(yù)測(cè)未來(lái)需要的資源,并基于預(yù)測(cè)值提前調(diào)整資源供給。主動(dòng)式伸縮方法實(shí)現(xiàn)資源配置的有效性依賴于預(yù)測(cè)模型的準(zhǔn)確度,由于云負(fù)載數(shù)據(jù)時(shí)序變化模式多樣,具有波動(dòng)性、持續(xù)性、多周期性等特征,構(gòu)建精確的負(fù)載預(yù)測(cè)模型是一項(xiàng)具有挑戰(zhàn)性的任務(wù),需要綜合考慮數(shù)據(jù)收集、特征工程和模型選擇等方面[5-6]。針對(duì)這一難點(diǎn)問(wèn)題,進(jìn)一步優(yōu)化云平臺(tái)彈性伸縮策略,對(duì)于保障云平臺(tái)平穩(wěn)高效運(yùn)行、提升云服務(wù)質(zhì)量具有重要意義。
基于以上研究,本文分析研究了自回歸移動(dòng)平均(ARMA,Autoregressive Moving Average)、卷積神經(jīng)網(wǎng)絡(luò)(CNN,Convolutional Neural Networks)和支持向量回歸(SVR,Support Vector Regression)等3 種典型預(yù)測(cè)模型,并結(jié)合3 種模型的特點(diǎn),提出一種基于ARMA-CNN-SVR 的負(fù)載預(yù)測(cè)組合模型,提高了負(fù)載資源預(yù)測(cè)的準(zhǔn)確度。通過(guò)所提出的負(fù)載預(yù)測(cè)模型對(duì)云平臺(tái)中的資源使用情況進(jìn)行預(yù)測(cè),并根據(jù)預(yù)測(cè)的未來(lái)資源使用情況優(yōu)化彈性伸縮策略,最終得出滿足云平臺(tái)高負(fù)載運(yùn)行的彈性伸縮方案。
ARMA 模型、CNN 模型和SVR 模型都適用于對(duì)時(shí)間序列數(shù)據(jù)的分析和預(yù)測(cè),在以時(shí)間計(jì)容量變化的擴(kuò)縮容場(chǎng)景中,三者都是匹配度較高的分析預(yù)測(cè)模型,且具備各自明顯特點(diǎn),在算法融合方面有一定潛力可挖。
(1)ARMA 模型是一種常用于時(shí)間序列預(yù)測(cè)的統(tǒng)計(jì)模型。它基于時(shí)間序列的自相關(guān)性和移動(dòng)平均性質(zhì),通過(guò)對(duì)數(shù)據(jù)進(jìn)行擬合來(lái)預(yù)測(cè)未來(lái)的觀測(cè)值[7-8]。其優(yōu)點(diǎn)在于考慮了過(guò)去觀測(cè)值和誤差項(xiàng)之間的相關(guān)性,適用于對(duì)時(shí)間序列數(shù)據(jù)建模,但對(duì)于非線性、非平穩(wěn)的數(shù)據(jù)擬合效果較差,難以處理長(zhǎng)期依賴關(guān)系。
(2)CNN 模型是一種深度學(xué)習(xí)模型,其卷積層和池化層具有強(qiáng)大的計(jì)算能力,且能夠降低數(shù)據(jù)在平移過(guò)程中的損失率,從而顯著減少對(duì)特征向量的影響,經(jīng)過(guò)不同的卷積層和池化層,可以有效地控制模型的擬合能力,從而降低擬合過(guò)程中特征向量的維數(shù)。用于時(shí)間序列預(yù)測(cè)是通過(guò)在時(shí)間序列上進(jìn)行卷積操作提取局部特征,并利用池化操作實(shí)現(xiàn)特征的降維[9-10],但對(duì)數(shù)據(jù)前后關(guān)系表現(xiàn)不夠充分。
(3)SVR 模型主要通過(guò)歷史時(shí)間序列數(shù)據(jù)訓(xùn)練,也可以用于未來(lái)時(shí)間序列預(yù)測(cè)[11]。其核心思想是通過(guò)核函數(shù)將輸入的序列數(shù)據(jù)映射到某個(gè)高維空間中,再對(duì)其進(jìn)行線性回歸,并將回歸結(jié)果通過(guò)相反的映射方式映射回去,最后得到回歸結(jié)果,解決了維數(shù)問(wèn)題,其中,算法的復(fù)雜度和樣本維數(shù)都是相互獨(dú)立的。SVR 模型的優(yōu)點(diǎn)在于使結(jié)構(gòu)化風(fēng)險(xiǎn)降低至最小且對(duì)數(shù)據(jù)擬合表現(xiàn)效果較好。
ARMA、CNN、SVR 等3 種預(yù)測(cè)模型各有優(yōu)缺點(diǎn),且存在融洽的優(yōu)劣互補(bǔ)之勢(shì)。基于此,本文提出了一種ARMA-CNN-SVR 組合模型,先通過(guò)ARMA 做預(yù)測(cè)值序列更新,再通過(guò)CNN 訓(xùn)練數(shù)據(jù)獲取卷積層權(quán)重參數(shù),最后將卷積層輸出結(jié)果作為SVR 的輸入特征向量進(jìn)行訓(xùn)練,進(jìn)行負(fù)載資源預(yù)測(cè)。基于該組合模型的負(fù)載預(yù)測(cè)方法如下。
(1)數(shù)據(jù)預(yù)處理。由于ARMA 模型需要時(shí)間序列滿足平穩(wěn)性和非白噪聲的要求,因此利用差分法來(lái)實(shí)現(xiàn)數(shù)據(jù)的平滑處理,得到平穩(wěn)序列,并通過(guò)單位根檢驗(yàn)法(ADF,Augmented Dickey-Fuller)進(jìn)行平穩(wěn)性檢驗(yàn)。
(2)ARMA 模型構(gòu)建。基于信息量準(zhǔn)則的方法確定模型階數(shù),通過(guò)最小二乘法確定模型參數(shù),進(jìn)而完成ARMA 模型構(gòu)建。
(3)時(shí)間序列更新。通過(guò)構(gòu)建的ARMA 模型進(jìn)行時(shí)間序列預(yù)測(cè),并將預(yù)測(cè)值與原始數(shù)據(jù)拼接起來(lái),得到新的數(shù)據(jù)集。
(4)CNN 特征提取。構(gòu)建CNN 模型,通過(guò)訓(xùn)練更新后的數(shù)據(jù)集進(jìn)行特征提取,對(duì)ARMA 預(yù)測(cè)進(jìn)行進(jìn)一步修正。進(jìn)行特征提取時(shí),根據(jù)實(shí)際情況,通過(guò)用例進(jìn)行反復(fù)交叉驗(yàn)證(訓(xùn)練)來(lái)選擇最優(yōu)的參數(shù)。
(5)SVR 模型預(yù)測(cè)。構(gòu)建SVR 模型,使用CNN提取的特征向量作為輸入,SVR 模型不需要復(fù)雜的預(yù)處理,直接從輸入數(shù)據(jù)中自動(dòng)進(jìn)行特征挖掘和提取,通過(guò)輸入融合值,將二維輸入空間映射到高維空間,在高維空間中構(gòu)造一個(gè)最優(yōu)函數(shù),處理二維空間中的預(yù)測(cè)回歸問(wèn)題。
傳統(tǒng)響應(yīng)式伸縮的水平擴(kuò)展自動(dòng)縮放(HPA,Horizontal Pod Autoscaler)策略雖然可以實(shí)現(xiàn)彈性伸縮,但該策略根據(jù)當(dāng)前數(shù)據(jù)及閾值規(guī)則觸發(fā),存在指標(biāo)設(shè)定困難、彈性滯后等問(wèn)題[12]。本文提出一種基于ARMA-CNN-SVR 負(fù)載預(yù)測(cè)組合模型的彈性伸縮方案,根據(jù)預(yù)測(cè)出來(lái)的負(fù)載值提前對(duì)目標(biāo)Pod 進(jìn)行彈性伸縮,具體方案如下。
(1)監(jiān)控模塊調(diào)用Metrics Server 中的應(yīng)用程序編程接口(API,Application Programming Interface)獲取集群中央處理器(CPU,Central Processing Unit)利用率信息,Metrics 將得到的CPU 利用率信息返回給監(jiān)控模塊,監(jiān)控模塊對(duì)數(shù)據(jù)進(jìn)行規(guī)范化處理后存儲(chǔ)到數(shù)據(jù)庫(kù)中。
(2)負(fù)載預(yù)測(cè)模塊讀取數(shù)據(jù)庫(kù)中的CPU 利用率數(shù)據(jù),將該數(shù)據(jù)輸入到ARMA-CNN-SVR 預(yù)測(cè)組合模型中進(jìn)行預(yù)測(cè),并將預(yù)測(cè)結(jié)果進(jìn)行處理后存儲(chǔ)到數(shù)據(jù)庫(kù)中。
(3)監(jiān)聽(tīng)程序持續(xù)監(jiān)聽(tīng)數(shù)據(jù)庫(kù)存儲(chǔ)的預(yù)測(cè)信息是否有更新,當(dāng)有新的預(yù)測(cè)結(jié)果被存儲(chǔ)到數(shù)據(jù)庫(kù)時(shí),監(jiān)聽(tīng)程序?qū)⒏鶕?jù)預(yù)測(cè)結(jié)果與應(yīng)用被預(yù)測(cè)時(shí)所擁有的資源信息來(lái)判斷應(yīng)用是否需要進(jìn)行彈性伸縮。
(4)根據(jù)CPU 利用率預(yù)測(cè)出的值,計(jì)算期望的目標(biāo)Pod 的資源使用量。如果該使用量大于設(shè)定的數(shù)量,監(jiān)聽(tīng)程序?qū)?dòng)一個(gè)定時(shí)觸發(fā)的命令,在預(yù)測(cè)時(shí)間的前一段時(shí)間內(nèi)向應(yīng)用控制器發(fā)送擴(kuò)容指令;如果小于設(shè)定的數(shù)量,則對(duì)應(yīng)用控制器發(fā)起縮容指令,至此一個(gè)擴(kuò)容或縮容完成,直到監(jiān)聽(tīng)程序監(jiān)聽(tīng)到新的預(yù)測(cè)信息并存儲(chǔ)到數(shù)據(jù)庫(kù)為止。
2.1.1 實(shí)驗(yàn)?zāi)P瓦x擇
本次實(shí)驗(yàn)?zāi)P瓦x擇為:本文組合模型、ARMA模型、CNN 模型、SVR 模型,其中,本文組合模型為實(shí)驗(yàn)組,其余模型為對(duì)照組。
2.1.2 測(cè)試云環(huán)境準(zhǔn)備
實(shí)驗(yàn)選取信創(chuàng)適配實(shí)驗(yàn)室中搭載的云平臺(tái)作為研究對(duì)象,具體配置包括:21 臺(tái)控制節(jié)點(diǎn)(鯤鵬920CPU,32Core@2.6 GHz),4 臺(tái)網(wǎng)絡(luò)節(jié)點(diǎn)(鯤鵬920CPU,32Core@2.6 GHz),27 臺(tái)計(jì)算節(jié)點(diǎn)(鯤鵬920CPU,32Core@2.6 GHz),14 臺(tái)存儲(chǔ)服務(wù)器。以上節(jié)點(diǎn)均運(yùn)行在Euler v2r10 操作系統(tǒng)中。
2.1.3 冷卻規(guī)則設(shè)計(jì)
為了防止伸縮動(dòng)作過(guò)于頻繁可能影響服務(wù)的正常使用,造成應(yīng)用混亂,伸縮控制需要有冷卻時(shí)間。伸縮組在冷卻時(shí)間內(nèi),會(huì)拒絕由告警策略觸發(fā)的伸縮活動(dòng),其他類型的伸縮策略(如定時(shí)策略和周期策略)觸發(fā)的伸縮活動(dòng)不受限制。
2.1.4 測(cè)試用例
負(fù)載單位為標(biāo)準(zhǔn)虛擬機(jī)臺(tái)數(shù)。負(fù)載變化時(shí)間與需求量如表1 所示。

表1 測(cè)試用例表
使用ARMA 模型、CNN 模型、SVR 模型及本文組合模型得到的負(fù)載預(yù)測(cè)結(jié)果如表2 和表3 所示。

表2 負(fù)載預(yù)測(cè)模型預(yù)測(cè)結(jié)果

表3 負(fù)載預(yù)測(cè)模型預(yù)測(cè)結(jié)果對(duì)比
根據(jù)實(shí)驗(yàn)結(jié)果可以得出以下結(jié)論。
(1)ARMA 模型預(yù)測(cè)表現(xiàn)出明顯的平均回歸取向,且在負(fù)載變化較大的情況下反應(yīng)遲鈍。其平均預(yù)測(cè)偏移量達(dá)35%以上,在整個(gè)實(shí)驗(yàn)中成績(jī)最低。
(2)CNN 模型預(yù)測(cè)偏離優(yōu)于ARMA 模型,在算法上有一定優(yōu)勢(shì),平均偏移量為31% 左右,與ARMA 模型35.8%的成績(jī)相比,提高有限。
(3)SVR 模型預(yù)測(cè)偏離優(yōu)于CNN 模型,平均偏移量在30%以內(nèi),且出現(xiàn)了實(shí)驗(yàn)中的最小偏離值1.1%,從結(jié)果上看,模型有效性得到進(jìn)一步驗(yàn)證。
(4)本文組合模型通過(guò)3 種模型的融合和參數(shù)調(diào)整,最終結(jié)果有了顯著的進(jìn)步,平均偏移量達(dá)到了15.1%。
本文研究分析了ARMA、CNN 和SVR 等3 種負(fù)載預(yù)測(cè)模型,并結(jié)合這3 種負(fù)載預(yù)測(cè)模型的優(yōu)缺點(diǎn),提出一種基于ARMA-CNN-SVR 的負(fù)載預(yù)測(cè)組合模型,從實(shí)驗(yàn)結(jié)果可以得出,組合后的預(yù)測(cè)模型提高了預(yù)測(cè)結(jié)果的準(zhǔn)確度。結(jié)合負(fù)載預(yù)測(cè),進(jìn)一步優(yōu)化云平臺(tái)彈性伸縮策略,從而更好地應(yīng)對(duì)負(fù)載的波動(dòng)和變化,有效地避免了資源浪費(fèi)和不足的問(wèn)題,提高系統(tǒng)的利用率,降低運(yùn)營(yíng)維護(hù)成本,提升用戶體驗(yàn)。展望未來(lái),云平臺(tái)的性能優(yōu)化在網(wǎng)絡(luò)流量、響應(yīng)時(shí)間等其他指標(biāo)方面還有進(jìn)一步的研究和改進(jìn)空間。通過(guò)持續(xù)改進(jìn)和創(chuàng)新,云平臺(tái)有望在未來(lái)為大規(guī)模系統(tǒng)的管理和運(yùn)營(yíng)維護(hù)帶來(lái)更多的便利和效益。