預測性自動縮放引擎的制作方法
【技術(shù)領(lǐng)域】
[0001]實施例一般涉及工作負載管理,并且更具體地涉及在預期到應用的未來工作負載的情況下預測性地縮放云計算環(huán)境內(nèi)執(zhí)行的應用的多個實例。
【背景技術(shù)】
[0002]高效資源分配是對現(xiàn)代云計算環(huán)境的持續(xù)挑戰(zhàn)。例如,特定應用可能需要100個應用實例來處理其峰值工作負載,但是可能僅需要40個應用實例來用于處理其平均工作負載。在此示例中,應用可以被配置為使用40個應用實例來操作,但是此配置將會不能適應應用的峰值工作負載。同樣,應用可以被配置為一直使用100個應用實例來操作,但是此配置將會導致資源的低效使用,因為應用實例可能在非峰值工作負載期間處于空閑或未被充分利用。因此,云解決方案可能試圖反應性地縮放應用實例的數(shù)量來滿足波動的工作負載。也就是說,邏輯可以確定應用資源何時處于空閑或者應用何時不能跟上其當前的工作負載,并且可以將應用實例的數(shù)量相應地縮小或放大。然而,由于應用的工作負載在實踐中幾乎是確定地動態(tài)的,縮放應用實例的數(shù)量以適應增加或減少的工作負載是富有挑戰(zhàn)性的。
[0003]作為另一挑戰(zhàn),許多應用的啟動過程需要大量時間。因此,如果附加的應用實例直到系統(tǒng)檢測到該應用相對于當前的工作負載表現(xiàn)不佳時才被創(chuàng)建,并且應用實例花費大量時間來進行初始化,那么應用可能在等待應用實例被初始化的同時遠遠落后于其當前的工作負載。此情景可能導致應用的進一步表現(xiàn)不佳,并且在一些情況下可能導致系統(tǒng)反應性地產(chǎn)生甚至更多的附加應用實例來解決表現(xiàn)不佳,從而導致過量的應用實例。此外,在這樣的反應性縮放技術(shù)不能足夠快速地滿足正增加的工作負載的情況下,系統(tǒng)可能完全不能趕上,從而潛在地導致中斷、錯誤甚至整個系統(tǒng)故障。
【發(fā)明內(nèi)容】
[0004]本文公開的一個實施例提供了一種方法,該方法包括:在第一時間窗內(nèi)監(jiān)控云計算環(huán)境內(nèi)的應用的性能以收集歷史性能數(shù)據(jù)。應用包括多個應用實例。方法還包括在第二時間窗內(nèi)監(jiān)控應用的工作負載以收集歷史工作負載數(shù)據(jù)。此外,方法包括分析歷史性能數(shù)據(jù)和歷史工作負載數(shù)據(jù)二者以確定應用的一個或多個縮放模式。該方法還包括:在確定應用的當前狀態(tài)與一個或多個縮放模式中的一個相匹配時,確定用于預測性地縮放應用的計劃。此外,方法包括:基于所確定的計劃來預測性地縮放多個應用實例以及在第二時間窗內(nèi)監(jiān)控具有經(jīng)縮放的多個應用實例的應用的性能以收集附加性能數(shù)據(jù)和附加工作負載數(shù)據(jù)中的至少一者,其中附加性能數(shù)據(jù)和附加工作負載數(shù)據(jù)中的至少一者被用于影響將來的縮放事件。
[0005]其他實施例包括但不限于:包括使得處理單元能夠?qū)崿F(xiàn)所公開的方法的一個或多個方面的指令的計算機可讀介質(zhì)以及被配置為實現(xiàn)所公開的方法的一個或多個方面的系統(tǒng)。
【附圖說明】
[0006]因此,以可以詳細理解本公開的上述特征的方式,可以參照實施例進行以上簡要概述的更具體描述,一些實施例在附圖中示出。然而,應注意,附圖僅示出典型實施例,且因此不應認為限制其范圍,因為本公開可以包括其他均等有效的實施例。
[0007]圖1示出根據(jù)本文描述的一個實施例的、配置有預測性縮放組件的計算基礎設施。
[0008]圖2示出根據(jù)本文描述的一個實施例的、配置有預測性縮放組件的計算基礎設施。
[0009]圖3是示出了根據(jù)本文描述的一個實施例的、用于確定云應用的性能模式的方法的流程圖。
[0010]圖4是示出了根據(jù)本文描述的一個實施例的、用于預測性地縮放云應用的實例的方法的流程圖。
[0011]圖5示出根據(jù)本文描述的一個實施例的、配置有預測性縮放組件的計算基礎設施。
【具體實施方式】
[0012]一般來說,許多大規(guī)模應用包括多個不同的應用實例。應用的工作負載可以通過(一個或多個)負載均衡算法的使用來分布至這些應用實例中。通常,以此方式設計應用存在許多優(yōu)點。例如,可以添加或移除應用實例以動態(tài)地縮放應用的大小,從而允許應用處理增加的工作負載(即,通過添加實例)或釋放空閑或未充分利用的計算資源(即,通過移除實例)。此外,如果一個應用實例出現(xiàn)故障,則剩余的應用實例可以承擔出現(xiàn)故障的實例的工作負載,從而為應用提供冗余。
[0013]管理在云環(huán)境中運行的大規(guī)模應用(例如,視頻流服務及其支持應用)的一個挑戰(zhàn)在于,此應用的工作負載可能隨時間顯著地變化。例如,這樣的視頻流服務可能在晚上在峰值電視觀看時段期間經(jīng)歷其峰值工作負載,而相同的流服務可能在觀看者的需求不那么大的清晨時段經(jīng)歷較輕的工作負載。此外,隨著視頻流服務增加新的觀看者,一周中的給定夜晚的峰值工作負載將根據(jù)觀看者的增長以基本上每周為基礎增加。這可能在觀眾快速增長的時間期間(例如,在用于視頻流服務的促銷周期期間)特別明顯。
[0014]當前,云計算環(huán)境可以被配置為基于在給定時間點處應用的當前工作負載來反應性地縮放應用實例的數(shù)量。例如,云計算環(huán)境可以檢測到當前實例化的應用實例不能跟上到來的請求的數(shù)量,并且因此可以確定應實例化附加的應用實例來幫助滿足應用的當前工作負載。
[0015]雖然此反應性縮放技術(shù)在某些情況下(例如,當應用的啟動時間相對短時,當工作負載以相對慢的速率改變時等等)可以足夠地執(zhí)行,但是這些技術(shù)并不適用于一些應用。例如,特定應用的應用實例可能花費一個小時來完全實例化。在這樣的應用的情況下,如果直到應用實例的當前數(shù)量不能跟上當前工作負載時才創(chuàng)建附加應用實例(即,反應性縮放解決方案),那么到來的請求的積壓可能繼續(xù)積累一個小時,直到將附加的應用實例帶上線。這樣,用戶可能在該啟動時間期間體驗到延遲或服務中斷。此外,由于工作負載在此冗長的啟動時間期間可能繼續(xù)增加,所以等到附加應用實例被完全初始化的時候,附加應用實例的數(shù)量可能不再夠用。此問題是復合的,因為在附加應用實例的啟動時間期間積聚的請求積壓也必須被處理。
[0016]因此,實施例提供用于預測性地縮放用于云計算環(huán)境中的應用的多個應用實例的技術(shù)。實施例可以在第一時間窗內(nèi)監(jiān)控云計算環(huán)境內(nèi)的應用的性能以收集歷史性能數(shù)據(jù)。例如,實施例可以收集諸如應用實例在每單元時間可以處理多少請求以及用于創(chuàng)建新的應用實例的平均啟動時間之類的性能信息。此外,實施例可以在第二時間窗內(nèi)監(jiān)控應用的工作負載以收集歷史工作負載數(shù)據(jù)。在此,實施例可用收集關(guān)于應用的工作負載在一天內(nèi)如何變化以及工作負載在一星期中的各天如何變化的信息。
[0017]實施例隨后可以分析歷史性能數(shù)據(jù)和歷史工作負載數(shù)據(jù)二者以確定針對應用的一個或多個縮放模式(pattern)。例如,實施例可以對收集到的數(shù)據(jù)執(zhí)行統(tǒng)計分析以確定指示了應用的工作負載的增加或減少的一個或多個模式。此外,實施例可以確定應用的當前狀態(tài)與一個或多個縮放模式中的一個相匹配,并且作為響應可以確定用于預測性地縮放應用的計劃。例如,實施例可以確定在未來時間點處可能被需要的多個應用實例,并且可以建立用于縮放當前數(shù)量的應用實例以在未來的時間點處實現(xiàn)所確定數(shù)量的應用實例的時間線。實施例隨后可以基于所確定的計劃來預測性地縮放多個應用實例。有利地是,這樣做提供了能夠?qū)玫墓ぷ髫撦d的波動進行預期并且可以相應地縮放應用實例的數(shù)量的預測性縮放解決方案。
[0018]圖1示出了根據(jù)本文描述的一個實施例的、配置有預測性縮放組件的計算基礎設施。如圖所示,系統(tǒng)100包括多個客戶端設備110和云計算環(huán)境,它們通過網(wǎng)絡115連接。云計算通常是指作為網(wǎng)絡上的服務的可縮放計算資源的配設。更正式來說,云計算可以被定義為這樣的計算能力:在計算資源與其底層技術(shù)架構(gòu)(例如,服務器、存儲設備、網(wǎng)絡)之間提供抽象化從而實現(xiàn)對可配置的計算資源的共享池的方便、按需的網(wǎng)絡訪問,該可配置的計算資源能夠用最少的管理工作或服務提供商交互而被快速配設和釋放。因此,云計算允許用戶訪問“云”中的虛擬計算資源(例如,存儲設備、數(shù)據(jù)、應用、甚至完整的虛擬計算系統(tǒng)),而不考慮用來提供計算資源的底層物理系統(tǒng)(或者那些系統(tǒng)的位置)。通常,云計算資源是按使用計費(pay-per-use)地提供給用戶,其中用戶僅為實際使用的計算資源(例如,用戶消耗的存儲空間的量或用戶實例化的虛擬系統(tǒng)的數(shù)量)付費。用戶可以在任何時間并且從互聯(lián)網(wǎng)中的任何地方訪問居于云中的資源。
[0019]在此,云計算環(huán)境120包括預測性縮放組件125、多個計算節(jié)點130以及歷史性能數(shù)據(jù)140。通常,計算節(jié)點130反映云計算環(huán)境120內(nèi)的計算系統(tǒng)(例如,虛擬機)。在此,每個計算節(jié)點130包括分布式應用的應用實例135。為了此示例的目的,假設托管在計算節(jié)點130上的應用