国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于二次移動平均法的容器云伸縮策略

2019-10-11 09:42:24劉錢超鄭禮輝
關(guān)鍵詞:平均法容器集群

劉錢超,吳 利,鄭禮輝

(江南計算技術(shù)研究所,江蘇 無錫 214083)

0 引 言

隨著大數(shù)據(jù)、云計算等軟件技術(shù)的飛速發(fā)展,基于虛擬機(jī)集群的分布式軟件運(yùn)行環(huán)境構(gòu)建方式資源開銷大、耗時長、可伸縮性差等缺點(diǎn)逐漸顯露,降低了軟件運(yùn)行效率,增加了運(yùn)維成本,而具有高可伸縮性和高資源使用率等優(yōu)勢的容器云環(huán)境為上述問題提供了優(yōu)化方案[1-2]。

容器云是以容器為資源分割和調(diào)度的基本單位,封裝整個軟件運(yùn)行時環(huán)境,為開發(fā)者和系統(tǒng)管理者提供用于構(gòu)建、發(fā)布和運(yùn)行分布式應(yīng)用的平臺[3]?;谌萜髟茦?gòu)建軟件運(yùn)行環(huán)境,與基于虛擬機(jī)集群方式相比,具有簡化軟件部署方式、優(yōu)化管理運(yùn)維模式和降低運(yùn)維成本等優(yōu)勢。然而,容器云作為一種全新的云環(huán)境解決方案,在集群動態(tài)伸縮策略方面仍存在不足。集群的動態(tài)伸縮[4-6]是指集群能夠根據(jù)工作負(fù)載的變化動態(tài)地調(diào)整自身規(guī)模,從而調(diào)整其對外服務(wù)的能力。目前,容器云采用的是基于閾值的響應(yīng)式伸縮策略,該策略只會對系統(tǒng)資源的實時情況進(jìn)行響應(yīng),因而系統(tǒng)的伸縮調(diào)整往往會晚于工作負(fù)載的變化,導(dǎo)致服務(wù)質(zhì)量不佳,用戶體驗較差。

目前,已有很多關(guān)于云環(huán)境下集群動態(tài)伸縮策略的改進(jìn)研究。文獻(xiàn)[7]提出一種基于工作流模型的虛擬機(jī)動態(tài)分配和回收策略,能夠較大程度地提高系統(tǒng)資源利用率,但該策略不能對集群未來工作負(fù)載進(jìn)行預(yù)測。文獻(xiàn)[8]針對基于虛擬機(jī)的資源管理難以實現(xiàn)細(xì)粒度的資源動態(tài)調(diào)整與混合云中跨平臺服務(wù)快速遷移的問題,提出一種基于容器技術(shù)的云計算資源自適應(yīng)管理方法,能夠提高集群自適應(yīng)響應(yīng)速度和集群整體性能,但該方法也不能對集群未來工作負(fù)載進(jìn)行預(yù)測。文獻(xiàn)[9]提出一種基于集群負(fù)載預(yù)測的虛擬機(jī)資源管理框架,能夠?qū)崿F(xiàn)對未來工作負(fù)載預(yù)測并及時做出伸縮響應(yīng),保證服務(wù)質(zhì)量,但該框架底層是基于虛擬機(jī)資源實現(xiàn),由于虛擬機(jī)啟停耗時長,集群伸縮響應(yīng)速度仍然較慢。

針對文獻(xiàn)[7-8]不能對未來工作負(fù)載進(jìn)行預(yù)測和文獻(xiàn)[9]中基于虛擬機(jī)資源響應(yīng)速度慢的不足,提出一種基于二次移動平均法的預(yù)測式容器云伸縮方法。該方法可以對未來工作負(fù)載進(jìn)行預(yù)測并依托容器輕量特點(diǎn)快速做出伸縮響應(yīng),從而降低服務(wù)響應(yīng)時間的波動幅度,提高服務(wù)的質(zhì)量和穩(wěn)定性。

1 伸縮策略選擇與預(yù)測模型建立

1.1 集群動態(tài)伸縮技術(shù)

集群動態(tài)伸縮技術(shù)包括響應(yīng)式伸縮[10]和預(yù)測式伸縮[11]兩種。

(1)響應(yīng)式伸縮。

基于閾值的響應(yīng)式伸縮策略因算法實現(xiàn)簡單,對集群突發(fā)式負(fù)載具有較好效果,目前被廣泛應(yīng)用于云平臺伸縮決策中。響應(yīng)式伸縮策略需要對響應(yīng)規(guī)則和閾值進(jìn)行設(shè)定。算法運(yùn)行時,會對系統(tǒng)內(nèi)資源(CPU、網(wǎng)絡(luò)、存儲、內(nèi)存等)進(jìn)行監(jiān)控,一旦監(jiān)測到某些指標(biāo)超過既定閾值,集群會發(fā)出相應(yīng)的擴(kuò)展或收縮命令。具體來說,如圖1(a)所示,t1時刻通過對系統(tǒng)資源進(jìn)行持續(xù)監(jiān)控,當(dāng)t2時刻監(jiān)測到系統(tǒng)資源有較大變化且超過閾值(包括上下限閾值)時,開始進(jìn)行集群伸縮,t5時刻完成伸縮?;陂撝档捻憫?yīng)式伸縮策略存在的不足是無法對未來負(fù)載進(jìn)行預(yù)測,只能對系統(tǒng)資源的實時情況進(jìn)行響應(yīng),因而系統(tǒng)的伸縮調(diào)整往往會晚于工作負(fù)載的變化,導(dǎo)致服務(wù)質(zhì)量不佳,用戶體驗變差。

(2)預(yù)測式伸縮。

預(yù)測式伸縮策略是對過去一段時間內(nèi)系統(tǒng)資源使用情況進(jìn)行分析,然后利用數(shù)學(xué)方法進(jìn)行建模并完成對未來時刻的預(yù)測。它能夠較好克服響應(yīng)式伸縮策略存在時間滯后性的缺點(diǎn)。具體來說,如圖1(b)所示,當(dāng)t1時刻根據(jù)歷史數(shù)據(jù)特點(diǎn)預(yù)測到t6時刻系統(tǒng)資源使用發(fā)生較大改變且超過所設(shè)置的閾值時,系統(tǒng)會在t2時刻發(fā)出伸縮命令,因而系統(tǒng)能在t6時刻負(fù)載發(fā)生大幅變化之前有充足時間完成伸縮操作,從而能夠及時響應(yīng)系統(tǒng)資源變化。

圖1 兩種伸縮方式

根據(jù)上述對兩種伸縮策略的分析,文中結(jié)合使用預(yù)測式伸縮策略與響應(yīng)式伸縮策略,在對集群突發(fā)式負(fù)載具有良好響應(yīng)效果的同時,也可以實現(xiàn)對未來時刻負(fù)載值的預(yù)測,克服響應(yīng)式伸縮策略存在時間滯后性的不足,從而提高集群資源響應(yīng)速度,更好地保障應(yīng)用服務(wù)的質(zhì)量和穩(wěn)定性。

1.2 預(yù)測模型建立

預(yù)測式伸縮策略常采用的分析方法主要有時間序列分析和機(jī)器學(xué)習(xí)[12],但機(jī)器學(xué)習(xí)需要較長模型訓(xùn)練時間,適用性不強(qiáng)。

二次移動平均法(又名二重移動平均法)是一種時間序列分析方法,它是在預(yù)測目標(biāo)時間序列上的一次移動平均值的基礎(chǔ)上再進(jìn)行一次移動平均,并將結(jié)果代入到相關(guān)公式中得到預(yù)測值,目的是解決一次移動平均法存在滯后偏差,使得預(yù)測值總是落后于實際觀測值的問題。它適用于數(shù)據(jù)隨某個變量呈現(xiàn)自相關(guān)特性的場景,考慮到容器云中應(yīng)用的資源使用情況可能隨時間呈現(xiàn)一定規(guī)律,因此文中選取二次移動平均法對未來時刻負(fù)載值進(jìn)行預(yù)測。其數(shù)學(xué)計算公式如下:

假設(shè)xt,xt-1,…,xt-n+1為系統(tǒng)在時刻t的歷史數(shù)據(jù)序列,因此t時刻數(shù)據(jù)序列的一次移動平均值為:

(1)

t時刻的二次移動平均值為:

(2)

(3)

(4)

(5)

因此基于二次移動平均法,對t時刻歷史數(shù)據(jù)序列進(jìn)行分析,可以計算出t+T時刻的預(yù)測值:

(6)

2 容器云動態(tài)伸縮方案

2.1 容器云伸縮決策過程

圖2為文中提出的容器云伸縮算法的決策過程。在算法運(yùn)行過程中,系統(tǒng)內(nèi)會維護(hù)一張容器服務(wù)最近L次響應(yīng)時間記錄表H,通過對系統(tǒng)內(nèi)容器服務(wù)(Service_ID)的響應(yīng)時間tres進(jìn)行持續(xù)監(jiān)控并用獲取到的數(shù)據(jù)不斷更新記錄表H。決策模塊會對表H中最近L次響應(yīng)時間進(jìn)行處理、建模、預(yù)測,得到未來時刻的預(yù)測值tpre,根據(jù)實時響應(yīng)時間數(shù)據(jù)以及預(yù)測值,利用基于閾值的響應(yīng)式伸縮策略進(jìn)行系統(tǒng)伸縮決策,并將伸縮命令傳遞給伸縮執(zhí)行模塊執(zhí)行。執(zhí)行完畢后,判斷伸縮算法是否繼續(xù)運(yùn)行,根據(jù)判斷結(jié)果來決定繼續(xù)循環(huán)或終止該算法。

圖2 容器云伸縮決策過程

2.2 伸縮算法模塊設(shè)計

如圖3所示,伸縮算法包含Monitor、Processor、Commander和Scheduler四個模塊。

圖3 伸縮算法模塊

(1)Monitor模塊。

Monitor模塊負(fù)責(zé)對應(yīng)用服務(wù)響應(yīng)時間tres持續(xù)監(jiān)控,并用獲取到的響應(yīng)時間序列不斷更新表H,使表H始終保持存儲最近L次應(yīng)用服務(wù)響應(yīng)時間。設(shè)定更新表H的策略為每次獲取服務(wù)響應(yīng)時間tres后,將其加入到鏈表尾部,同時將鏈表首元素刪除。在Monitor獲取到服務(wù)響應(yīng)時間后,同時也將采集到的數(shù)據(jù)傳遞給Commander模塊。

(2)Processor模塊。

Processor模塊主要對表H中最近L次服務(wù)響應(yīng)時間數(shù)據(jù)進(jìn)行分析、建模和對未來時刻值的預(yù)測。在具體算法實現(xiàn)時,假設(shè)表H中存儲的最近L次服務(wù)響應(yīng)時間序列為:xt-L+1,xt-L+2,…,xt-1,xt,設(shè)置好二次移動平均法參數(shù)n和預(yù)測間隔T后,基于二次移動平均法,根據(jù)表H中L條數(shù)據(jù)使用式6預(yù)測t+T時刻的服務(wù)響應(yīng)時間值xt+T,并將預(yù)測值傳遞給Commander模塊。

(3)Commander模塊。

Commander模塊會對Monitor模塊采集到的實時服務(wù)響應(yīng)時間tres和Processor模塊利用二次移動平均法計算出的響應(yīng)時間預(yù)測值tpre依據(jù)基于閾值的響應(yīng)式伸縮策略進(jìn)行判斷,如果tres>Tu‖tpre>Tu(Tu為響應(yīng)時間閾值上限)關(guān)系成立,說明系統(tǒng)內(nèi)服務(wù)響應(yīng)時間過長,質(zhì)量較差,因此Commander模塊會向Sch-eduler模塊發(fā)出擴(kuò)展命令,由Scheduler模塊完成容器服務(wù)擴(kuò)展(算法1中4~6行))。如果tres

算法1:伸縮決策算法。

Input:tres,H,Tu,Td,Service_ID

Output:Scale_Dec

1 Begin

2 While(algorithm is running)

3 Monitor and Collecttres,Maintain the tableH,calculate the valuetpre

4 iftres>Tu||tpre>Tu

5 send(Extension,E,Service_ID) command to Scheduler

6 end if

7 iftres

8 send(Contraction,E,Service_ID) command to Scheduler

9 end if

10 end While

11 End

(4)Scheduler模塊。

Scheduler模塊保存了一份對所有主機(jī)的評分表。集群中所有備選主機(jī)的CPU使用率、內(nèi)存占用率以及網(wǎng)絡(luò)帶寬占用率每隔一段時間就會被Scheduler模塊收集,并依據(jù)式7進(jìn)行評分和記錄到評分表中,通過評分高低來決定在哪臺主機(jī)上進(jìn)行容器服務(wù)的伸縮。

Scorei=(3-CPU_use-Mem_use-Net_use),Scorei∈(0,3)

(7)

其中,CPU_use為CPU使用率;Mem_use為內(nèi)存占用率;Net_use為網(wǎng)絡(luò)帶寬占用率。

同時,擴(kuò)展時需要計算擴(kuò)展容器服務(wù)個數(shù)N。假設(shè)需要擴(kuò)展的資源為E,單個容器持有資源為E0,因此可得N=E/E0。當(dāng)需要進(jìn)行收縮資源時,為防止因系統(tǒng)突然減少大量資源造成系統(tǒng)運(yùn)行異常,設(shè)定收縮資源時,每次釋放1個容器服務(wù)。

Scheduler模塊在運(yùn)行過程中,需要接收由Commander模塊發(fā)出的命令,如果收到的是擴(kuò)展命令,選擇當(dāng)前打分表中分?jǐn)?shù)最高的主機(jī),根據(jù)服務(wù)ID及新建容器命令,在指定主機(jī)上部署N個指定ID的容器,對外提供服務(wù)并將其記錄到Service記錄表S中,擴(kuò)展工作結(jié)束。此時為了避免因頻繁伸縮導(dǎo)致系統(tǒng)劇烈“抖動”,伸縮算法進(jìn)入一小段時間的休眠期(算法2中3~8行);如果收到的是收縮命令,選擇當(dāng)前打分表中分?jǐn)?shù)最低且其上運(yùn)行著相關(guān)服務(wù)的主機(jī)。分?jǐn)?shù)低意味著其上負(fù)載較重,因此在釋放資源時,為了維持負(fù)載均衡,首先移除負(fù)載較重主機(jī)上的服務(wù),減輕其上負(fù)載壓力。主機(jī)選定后,根據(jù)容器服務(wù)的ID,使用相關(guān)命令移除1個容器服務(wù),回收資源并更新Service記錄表S的內(nèi)容,收縮工作結(jié)束。同樣,為了避免因頻繁伸縮導(dǎo)致系統(tǒng)劇烈“抖動”,伸縮算法進(jìn)入一小段時間的休眠期(算法2中9~14行)。

算法2:伸縮執(zhí)行算法。

Input:(COMMAND,E,Service_ID)

Output:UpdatedS

1Begin

2 While(algorithm is running)

3 if “COMMAND” equals “Extension”

4 calculateN=E/E0;

5 Select the highest Score of the physical machine and deployN

6 Service_ID container service,updateS;

7 Sleep(a period of time);

8 end if

9 if “COMMAND” equals “Contraction”

10N=1;

11 Select the lowestScoreof the physical machine and removeN

12 Service_ID container service,updateS;

13 Sleep(a period of time);

14 end if

15 end While

16 End

3 實驗驗證及結(jié)果分析

3.1 實驗環(huán)境

實驗搭建了兩個四節(jié)點(diǎn)的Docker swarm[13]集群,分別為集群1和集群2。集群1為無任何修改的Docker swarm集群,即原生集群,采用的是響應(yīng)式伸縮策略。集群2為依據(jù)文中提出的伸縮策略改進(jìn)后的Docker swarm集群。實驗需要使用的工具包括并發(fā)測試執(zhí)行工具Jmeter以及反向代理器Nginx。實驗硬件包含6臺PC機(jī),各節(jié)點(diǎn)配置及安裝環(huán)境如表1所示。

表1 集群信息

續(xù)表1

圖4為實驗過程中主機(jī)之間的訪問順序。測試機(jī)通過其上安裝的Jmeter測試軟件以并發(fā)方式訪問swarm集群中容器Web認(rèn)證服務(wù)(實驗條件下只生成一類服務(wù)),并記錄服務(wù)響應(yīng)時間的變化情況。同時為了更好地驗證提出的伸縮方法,在訪問鏈路中加入了Nginx服務(wù)器來進(jìn)行消息轉(zhuǎn)發(fā)。

圖4 實驗過程中主機(jī)之間的訪問順序

文中提出的伸縮策略在具體算法實現(xiàn)時,L值設(shè)置為10,容器擴(kuò)展和收縮個數(shù)N設(shè)置為1,響應(yīng)時間閾值上限設(shè)置為0.9 s,閾值下限設(shè)置為0.2 s。二次移動平均法中n設(shè)置為2,預(yù)測時刻間隔T設(shè)置為1,也即根據(jù)t時刻的3個響應(yīng)時間值,使用二次移動平均法可以預(yù)測t+1時刻的響應(yīng)時間值。

3.2 實驗測試數(shù)據(jù)

表2為實驗負(fù)載數(shù)據(jù)。實驗負(fù)載數(shù)據(jù)分為兩類:周期性負(fù)載數(shù)據(jù)和突發(fā)式負(fù)載數(shù)據(jù)。

表2 實驗負(fù)載數(shù)據(jù)

續(xù)表2

3.3 實驗結(jié)果及分析

圖5為施加周期性負(fù)載的實驗結(jié)果。

圖5 周期性負(fù)載實驗結(jié)果

當(dāng)請求數(shù)為50、120時,文中提出的算法和純響應(yīng)式伸縮算法效果一致,兩條曲線在圖中完全重合。原因是此時服務(wù)的實時響應(yīng)時間和響應(yīng)時間的預(yù)測值均未超過響應(yīng)時間的閾值上限,沒有觸發(fā)容器云集群的伸縮機(jī)制。當(dāng)請求數(shù)增長至230時,文中算法下個時刻的服務(wù)響應(yīng)時間預(yù)測值已經(jīng)超出了閾值上限,因此會選擇一臺分?jǐn)?shù)最高的主機(jī)新建一個對應(yīng)容器并提供服務(wù)。當(dāng)請求數(shù)繼續(xù)增長至320時,由于文中算法已提前擴(kuò)展了容器服務(wù),服務(wù)的響應(yīng)時間減至約為純響應(yīng)式伸縮算法的一半,而此時純響應(yīng)式伸縮算法才判定響應(yīng)時間超過閾值上限并開始擴(kuò)展。直到請求數(shù)為410時,純響應(yīng)式算法擴(kuò)展效果開始顯現(xiàn),與文中算法效果一致。收縮過程與上述擴(kuò)展過程類似。

從圖5可以看出,對純響應(yīng)式伸縮策略,容器服務(wù)響應(yīng)時間波峰為0.9 s,波谷為0.2 s,波動幅度為0.7;而文中提出的優(yōu)化算法服務(wù)響應(yīng)時間波峰為0.7 s,波谷為0.3 s,波動幅度為0.4。與純響應(yīng)式伸縮策略相比,文中算法的服務(wù)響應(yīng)時間的波動幅度降低了約42.9%,有效減弱了由負(fù)載變化引起的服務(wù)響應(yīng)時間波動。

圖6為施加突發(fā)式負(fù)載的實驗結(jié)果。

圖6 突發(fā)式負(fù)載實驗結(jié)果

從圖中可以看出,文中算法與純響應(yīng)式伸縮算法結(jié)果始終保持一致,兩條曲線完全重合。原因為對改進(jìn)伸縮策略后的Docker swarm集群施加突發(fā)式負(fù)載時,二次移動平均法無法對未來時刻值進(jìn)行準(zhǔn)確預(yù)測,導(dǎo)致預(yù)測效果喪失,集群伸縮決策只由服務(wù)的實時響應(yīng)時間和響應(yīng)時間閾值之間大小關(guān)系決定。因此,對于突發(fā)式負(fù)載,文中算法與純響應(yīng)式伸縮算法表現(xiàn)一致。

3.4 實驗結(jié)論

文中提出的基于二次移動平均法的預(yù)測式容器云伸縮策略,在保留基于閾值的響應(yīng)式伸縮策略對突發(fā)式負(fù)載具有良好響應(yīng)效果的同時,在周期性負(fù)載條件下還能對未來負(fù)載值進(jìn)行準(zhǔn)確預(yù)測,提高了容器云對應(yīng)用資源請求的響應(yīng)能力,降低了服務(wù)響應(yīng)時間波動幅度,保證了服務(wù)響應(yīng)時間的穩(wěn)定性。

4 結(jié)束語

針對容器云目前基于閾值的響應(yīng)式伸縮策略存在時間滯后性、難以及時響應(yīng)服務(wù)資源請求的問題,提出一種基于二次移動平均法的預(yù)測式容器云伸縮方法。該方法可以對未來工作負(fù)載進(jìn)行預(yù)測并依托容器輕量特點(diǎn)快速做出伸縮響應(yīng)。通過設(shè)計兩種不同的工作負(fù)載場景對改進(jìn)后容器集群伸縮方法進(jìn)行了測試,驗證了該方法的可行性和有效性。但該方法也存在不足,即對周期性工作負(fù)載具有較好的預(yù)測效果,而對其他類型工作負(fù)載的預(yù)測效果并不理想。后續(xù)研究可以考慮結(jié)合機(jī)器學(xué)習(xí)方法來建立預(yù)測模型,提高預(yù)測模型在各種工作負(fù)載場景下的預(yù)測準(zhǔn)確性。

猜你喜歡
平均法容器集群
基于平均法的金屬橡膠隔振器非線性振動特性研究
Different Containers不同的容器
具有初邊值條件的集值脈沖微分方程的平均法
難以置信的事情
海上小型無人機(jī)集群的反制裝備需求與應(yīng)對之策研究
一種無人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計
電子制作(2018年11期)2018-08-04 03:25:40
平均法處理自由落體頻閃數(shù)據(jù)的研究
物理教師(2017年5期)2017-06-09 11:21:18
Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
勤快又呆萌的集群機(jī)器人
取米
远安县| 仲巴县| 松溪县| 重庆市| 高阳县| 通州区| 平塘县| 密山市| 阳山县| 平遥县| 连云港市| 梁平县| 石河子市| 乐业县| 巴青县| 台北市| 四平市| 公主岭市| 麻城市| 乐清市| 绥棱县| 句容市| 东海县| 中阳县| 桓仁| 师宗县| 咸宁市| 定襄县| 平武县| 霍林郭勒市| 天津市| 岑溪市| 安国市| 信阳市| 梅河口市| 茂名市| 临武县| 孟连| 上虞市| 徐汇区| 云霄县|