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