呂書林+李金旭
摘 要:通過分析當(dāng)前流行的虛擬資源伸縮技術(shù),文章提出基于需求預(yù)測機(jī)制和實(shí)時(shí)監(jiān)測相結(jié)合的資源伸縮策略,能從一定程度上解決虛擬化資源在調(diào)度過程中造成的服務(wù)時(shí)效性差和資源利用率低的問題。
關(guān)鍵詞:云平臺(tái);負(fù)責(zé)均衡;虛擬資源伸縮
1 研究意義
云平臺(tái)的優(yōu)勢是能提高資源的利用率,降低能源消耗,通過引入虛擬化技術(shù)等方式,來細(xì)化物理資源分配單元,從而提升系統(tǒng)分布的密度,提高系統(tǒng)使用效率,降低對(duì)物理設(shè)備的需求,從而降低IT設(shè)備投入,降低能耗節(jié)約成本。
云平臺(tái)中一個(gè)很關(guān)鍵的技術(shù)就是資源的虛擬化,并根據(jù)不同業(yè)務(wù)在不同時(shí)間對(duì)資源需求的不同特點(diǎn),來動(dòng)態(tài)地調(diào)節(jié)平衡虛擬化資源的配置,從而實(shí)現(xiàn)在現(xiàn)有物理資源規(guī)模情況下資源的高效利用[1]。那么,虛擬化資源的分配調(diào)度策略便成為云平臺(tái)技術(shù)研究的重點(diǎn)之一。虛擬化資源調(diào)度策略中研究的關(guān)鍵問題有兩個(gè),一是何時(shí)需要進(jìn)行虛擬資源的擴(kuò)充和伸縮,二是通過什么方式進(jìn)行虛擬資源的伸縮。這兩個(gè)問題的解決,使云平臺(tái)能夠在最佳時(shí)機(jī)以最優(yōu)的策略進(jìn)行資源的動(dòng)態(tài)配置。
2 虛擬資源伸縮技術(shù)概述
虛擬化資源的管理可以通過虛擬機(jī)管理程序來實(shí)現(xiàn),隨著虛擬化技術(shù)的不斷發(fā)展,目前針對(duì)虛擬化資源的伸縮技術(shù)研究主要分為兩個(gè)層面:一是基于水平層面的水平伸縮[2],一是基于垂直層面的垂直伸縮。
水平層面的伸縮是基于虛擬機(jī)層面來實(shí)現(xiàn)資源的動(dòng)態(tài)配置,通過增減虛擬機(jī)的數(shù)量來完成資源的補(bǔ)充和釋放。水平伸縮是一種非常容易實(shí)現(xiàn)的虛擬資源伸縮方式,在目前的各種云平臺(tái)中被廣泛使用。通過這種方式可以調(diào)整的資源規(guī)模相對(duì)較大,但同時(shí)因調(diào)配基于虛擬機(jī)層面,會(huì)造成不必要的資源浪費(fèi)。并且部署和啟動(dòng)虛擬機(jī)需要較長的時(shí)間才能完成,會(huì)造成服務(wù)等待的情況,對(duì)平臺(tái)服務(wù)的實(shí)效性有一定的影響。
垂直層面的伸縮是基于正在運(yùn)行的虛擬機(jī)自身的資源層面來實(shí)現(xiàn)資源的動(dòng)態(tài)調(diào)配。目前的技術(shù)已經(jīng)可以做到在虛擬機(jī)正常運(yùn)行的情況下完成在線虛擬機(jī)資源的動(dòng)態(tài)調(diào)整。并且,基于該層面的資源伸縮過程很短,在毫秒級(jí)時(shí)間內(nèi)即可完成。垂直層面資源伸縮技術(shù)的實(shí)現(xiàn)方式有多種,可以是同一臺(tái)物理機(jī)上的虛擬機(jī)之間進(jìn)行資源調(diào)度,也可以將物理機(jī)上空閑的資源分配給該物理機(jī)上的其他虛擬機(jī)。這兩種方式適用的應(yīng)用場景不同,在進(jìn)行伸縮方式選擇時(shí)需要根據(jù)具體情況分析,綜合考慮。
(1)第一種方式是基于同一臺(tái)物理機(jī)上不同虛擬機(jī)之間服務(wù)類型不同、服務(wù)請(qǐng)求分布不均、處理能力不同等因素為出發(fā)點(diǎn),通過虛擬機(jī)之間的資源調(diào)配,實(shí)現(xiàn)在擴(kuò)充虛擬機(jī)資源要求的情況下又不占用其他空閑資源。它的特點(diǎn)是資源調(diào)配時(shí)間短,但同時(shí)存在調(diào)配的資源規(guī)模相對(duì)較小的問題,不能滿足較大規(guī)模的資源伸縮需要。
(2)第二種方式是利用物理機(jī)的空閑資源進(jìn)行動(dòng)態(tài)的調(diào)配,在虛擬機(jī)需要資源擴(kuò)充時(shí)申請(qǐng)空閑資源完成資源的增加,在資源需求降低時(shí)釋放部分空閑資源到物理機(jī)上。它的特點(diǎn)是充分利用物理機(jī)空閑資源,能夠根據(jù)用戶需求的變化做到快速響應(yīng),但同時(shí)也存在第一種方式中資源調(diào)度規(guī)模較小的問題。
3 資源伸縮策略探討
為了實(shí)現(xiàn)云平臺(tái)虛擬資源的可伸縮性,平臺(tái)應(yīng)該能夠根據(jù)服務(wù)所需資源的變化動(dòng)態(tài)增加或者減少虛擬資源,當(dāng)需要增加虛擬資源時(shí),最簡便的方式是當(dāng)監(jiān)測到虛擬資源利用率超過約定上限時(shí)啟動(dòng)虛擬機(jī)來滿足資源擴(kuò)充。但是虛擬機(jī)的啟動(dòng)會(huì)耗費(fèi)一定的時(shí)間,在這段時(shí)間內(nèi),因虛擬機(jī)尚在調(diào)配過程中不能向用戶及時(shí)提供服務(wù),將會(huì)影響服務(wù)性能,造成對(duì)用戶服務(wù)請(qǐng)求響應(yīng)的滯后。
基于上述情況,人們對(duì)云平臺(tái)的資源伸縮便有了具體的要求。云平臺(tái)需要能夠根據(jù)具體的服務(wù)請(qǐng)求來動(dòng)態(tài)選擇適合的方式進(jìn)行虛擬資源的增減。可以通過兩種方式來改善動(dòng)態(tài)調(diào)配過程中存在的服務(wù)時(shí)效性和資源調(diào)度成本問題。
(1)一是為不同的應(yīng)用設(shè)定資源使用底限和上限,并加入對(duì)下一階段資源需求預(yù)測機(jī)制,根據(jù)動(dòng)態(tài)的預(yù)測結(jié)果來及時(shí)補(bǔ)充或釋放虛擬資源。由于資源的調(diào)配是基于預(yù)測結(jié)果進(jìn)行,這就給資源的調(diào)度時(shí)間提供了一個(gè)比較寬松的環(huán)境,基于該策略的調(diào)度可以在水平和垂直兩個(gè)層面進(jìn)行。
(2)二是通過實(shí)時(shí)監(jiān)控的方式進(jìn)行資源的實(shí)時(shí)擴(kuò)展和實(shí)時(shí)釋放。因?yàn)閷?shí)時(shí)擴(kuò)展過程中要盡量保證服務(wù)的實(shí)效性,那么就要求云平臺(tái)能夠較快地完成調(diào)度過程,我們可以選擇基于垂直層面的第一種資源伸縮方式來實(shí)現(xiàn)。釋放資源不存在影響服務(wù)時(shí)效性的問題,對(duì)調(diào)度時(shí)間的要求比較低,這使得預(yù)先釋放資源的意義不大,所以可以在監(jiān)測到資源使用率低于規(guī)定的下限時(shí)進(jìn)行實(shí)時(shí)資源釋放。
為了進(jìn)一步提高資源伸縮的實(shí)際效率,可以綜合考慮以上兩種方法,并在資源調(diào)度過程中引入基于預(yù)測伸縮和實(shí)時(shí)伸縮相結(jié)合的方法來解決實(shí)際問題。
基于垂直層面進(jìn)行資源伸縮的兩種方式適合實(shí)時(shí)資源調(diào)整規(guī)模較小的情況,而虛擬機(jī)層面的水平伸縮適合對(duì)實(shí)時(shí)性要求不高的資源調(diào)整規(guī)模較大的場景。所以,在基于未來資源需要預(yù)測的伸縮過程中,根據(jù)平臺(tái)負(fù)載預(yù)測結(jié)果對(duì)平臺(tái)進(jìn)行基于水平伸縮(虛擬機(jī)層面)和基于垂直層面第二種伸縮方式進(jìn)行資源的伸縮。在實(shí)時(shí)擴(kuò)展過程中,對(duì)平臺(tái)進(jìn)行基于垂直層面的兩種方式進(jìn)行擴(kuò)展,在實(shí)時(shí)釋放過程中,對(duì)平臺(tái)進(jìn)行水平層面和基于垂直層面第二種伸縮方式的資源釋放。
4 云平臺(tái)負(fù)載預(yù)測方法探討
4.1 云平臺(tái)負(fù)載預(yù)測研究現(xiàn)狀
負(fù)載預(yù)測對(duì)于云平臺(tái)資源伸縮來說是十分必要的,并且當(dāng)前針對(duì)云平臺(tái)的負(fù)載預(yù)測問題已經(jīng)有了相當(dāng)多的研究成果,這些研究成果對(duì)于云平臺(tái)的資源伸縮技術(shù)的改進(jìn)和進(jìn)步都有不同的貢獻(xiàn)。例如,有研究人員提出的一種基于自回歸滑動(dòng)平均模型(Autoregressive Moving Average Model, AMAM)的方法進(jìn)行負(fù)載預(yù)測,方法是根據(jù)服務(wù)器負(fù)載動(dòng)態(tài)變化的統(tǒng)計(jì)分析結(jié)果所總結(jié)出的負(fù)載變化規(guī)律,提出了基于服務(wù)器負(fù)載和時(shí)間序列的預(yù)測方法,并且在應(yīng)用中使用該方法對(duì)網(wǎng)關(guān)服務(wù)器的負(fù)載情況進(jìn)行預(yù)測。另外還有一種基于二階自回歸滑動(dòng)平均模型的負(fù)載預(yù)測方法,采用了類似的策略。還有研究人員提出了一種基于負(fù)載熱點(diǎn)檢測預(yù)測法,該方法的實(shí)現(xiàn)分為兩個(gè)步驟:第一步是依據(jù)針對(duì)負(fù)載的監(jiān)測結(jié)果對(duì)負(fù)載未來發(fā)展趨勢作出預(yù)判,然后依據(jù)作出的趨勢判斷使用相應(yīng)的負(fù)載預(yù)測算法進(jìn)行預(yù)測;這種基于負(fù)載熱點(diǎn)的預(yù)測方法,能夠有效預(yù)測出負(fù)載的突發(fā)性增長并及時(shí)報(bào)警,從而為資源的及時(shí)擴(kuò)充提前做好準(zhǔn)備。
這幾種方法的優(yōu)點(diǎn)是計(jì)算量相對(duì)較小,但方法中使用到的預(yù)測模型是相對(duì)固定的,模型不能夠依據(jù)負(fù)載實(shí)際的變化情況而進(jìn)行動(dòng)態(tài)的調(diào)整,這就容易出現(xiàn)預(yù)測結(jié)果不夠準(zhǔn)備的結(jié)果。
除以上幾種方法外,還有基于模式匹配和狀態(tài)遷移的負(fù)載預(yù)測方法,如PRESS。方法首先使用信號(hào)處理技術(shù)來標(biāo)識(shí)重復(fù)的負(fù)載片段,此時(shí)會(huì)出現(xiàn)兩種情況。一是發(fā)現(xiàn)當(dāng)前的負(fù)載片段與以往的負(fù)載出現(xiàn)了重合,此種情況下方法就依據(jù)重復(fù)片段進(jìn)行負(fù)載預(yù)測。二是發(fā)現(xiàn)當(dāng)前的負(fù)載與以往的負(fù)載不存在相似性,此種情況下就使用基于統(tǒng)計(jì)的狀態(tài)驅(qū)動(dòng)方法來捕捉短時(shí)間內(nèi)的負(fù)載模式,并使用離散時(shí)間的馬爾可夫鏈來預(yù)測未來的負(fù)載情況。然而,馬爾可夫預(yù)測模型存在預(yù)測精度低、誤差大、適用范圍小等缺點(diǎn)。這種預(yù)測方法是通過對(duì)歷史負(fù)載數(shù)據(jù)分析來預(yù)測服務(wù)負(fù)載的,負(fù)載預(yù)測結(jié)果比較準(zhǔn)確,但是這類方法通常需要大量的計(jì)算和較長的時(shí)間,為平臺(tái)帶來很大計(jì)算開銷。徐風(fēng)苓、孟祥武等使用的基于移動(dòng)任務(wù)上下文相似度的協(xié)同過濾推薦算法,也是基于字符串匹配和模式匹配的方法,首先來判斷識(shí)別相似的負(fù)載片段,然后再進(jìn)行負(fù)載的預(yù)測。
4.2 云平臺(tái)負(fù)載的特點(diǎn)
云平臺(tái)的負(fù)載是比較復(fù)雜的,很多情況下單靠負(fù)載分布曲線是無法準(zhǔn)確描述的。具體來說,存在以下幾方面的特點(diǎn)。
(1)時(shí)間關(guān)聯(lián)性,上一時(shí)間段的負(fù)載對(duì)下一時(shí)間段的負(fù)載存在很大的影響。
(2)波動(dòng)性,負(fù)載可能在很長一段時(shí)間內(nèi)相對(duì)穩(wěn)定,但也存在突然波動(dòng)很大的偶發(fā)情況,不能用一般的線性規(guī)律模型進(jìn)行描述。
(3)自相似性,負(fù)載在不同的時(shí)間周期內(nèi)在某些特定的時(shí)間段內(nèi)存在一定的相似性。
4.3 云平臺(tái)負(fù)載預(yù)測方法的選取建議
通過對(duì)以上云平臺(tái)負(fù)載特點(diǎn)的分析,我們可以得出一些建議。針對(duì)較短時(shí)間內(nèi)云平臺(tái)負(fù)載存在的線性相關(guān)性,我們可以基于此建立線性模型來進(jìn)行預(yù)測,也就是說根據(jù)云平臺(tái)當(dāng)前的負(fù)載情況來預(yù)測下一段的負(fù)載是可行的;針對(duì)云平臺(tái)負(fù)載變化的歷史自相似性,我們也可以建立基于歷史數(shù)據(jù)的負(fù)載估測模型或采用模式識(shí)別算法來預(yù)測運(yùn)行過程中相似時(shí)期的負(fù)載情況;針對(duì)負(fù)載的波動(dòng)性特點(diǎn),我們需要在預(yù)測算法中加入相應(yīng)的調(diào)整和修正策略,來盡可能地保證預(yù)測的準(zhǔn)確性。在進(jìn)行模型建立和算法設(shè)計(jì)時(shí),同時(shí)需要考慮模型和算法的復(fù)雜度,盡量對(duì)算法本身進(jìn)行優(yōu)化,以減少負(fù)載預(yù)測時(shí)帶來的額外開銷,以降低對(duì)平臺(tái)性能的影響。
5 結(jié)語
本文探討了云平臺(tái)中負(fù)載預(yù)測和資源伸縮策略,建議在實(shí)際伸縮時(shí)對(duì)平臺(tái)運(yùn)行狀態(tài)進(jìn)行監(jiān)測,當(dāng)平臺(tái)資源利用率超出預(yù)定上限時(shí)使用基于垂直層面相關(guān)伸縮策略及時(shí)擴(kuò)充資源來滿足應(yīng)用需求,在平臺(tái)資源利用率低于約定下限時(shí)釋放資源。同時(shí),對(duì)云平臺(tái)的負(fù)載預(yù)測方法提出相關(guān)的建議。從以上思路出發(fā),使得云平臺(tái)在滿足更多服務(wù)請(qǐng)求的前提下能夠盡量減少資源的使用,并降低平臺(tái)成本。