郝庭毅 吳 恒 吳國全,2 張文博
1(中國科學院軟件研究所軟件工程技術中心 北京 100190)2(計算機科學國家重點實驗室(中國科學院軟件研究所) 北京 100190)3 (中國科學院大學 北京 100049) (haotingyi13@otcaix.iscas.ac.cn)
面向微服務架構的容器級彈性資源供給方法
郝庭毅1,2,3吳 恒1吳國全1,2張文博1
1(中國科學院軟件研究所軟件工程技術中心 北京 100190)2(計算機科學國家重點實驗室(中國科學院軟件研究所) 北京 100190)3(中國科學院大學 北京 100049) (haotingyi13@otcaix.iscas.ac.cn)
容器作為物理資源的邏輯抽象,具有資源占用少、資源供給快等特點,適合工作負載突變的互聯網應用模式,特別是面向微服務架構的新型服務范型.已有工作受限于物理機和虛擬化環境,或資源難以彈性供給或資源供給時效性較差,難以應對負載突變(flash-crowds)場景.針對此問題提出了一種服務質量(quality of service, QoS)敏感的、基于前饋的容器資源彈性供給方法,該方法采用排隊論刻畫工作負載、資源利用率和響應時間的關聯關系,構建應用性能模型.其中,響應時間采用模糊自適應卡爾曼濾波進行預測(前饋控制器),預測結果違背QoS是觸發資源彈性供給的依據.基于CloudStone基準的實驗結果顯示,前饋控制器具有快速收斂的特點,對響應時間的預測誤差小于10%.在flash-crowds場景下,相對于已有方法可有效保障應用的QoS.
容器虛擬化; 模糊自適應式卡爾曼濾波; 彈性資源供給;微服務架構;突發性負載
微服務架構(microservice)[1]體現了互聯網應用的設計思想,其核心理念是細粒度模塊劃分、服務化接口封裝、輕量級通信交互,具有2點優勢:1)模塊自治性強,能很好滿足互聯網應用訴求變化快、模塊獨立更新的需求;2)模塊擴展性好,能很好滿足互聯網應用用戶難預測、資源動態分配的需求.其中,前者涉及的是應用開發和設計范疇;后者強調的是應用運行和維護問題,也是本文關注的重點.根據Gartner報告,微服務本身具有良好的擴展性,正逐漸成為構造互聯網應用的主流架構模式,但從運行和維護的視角來看,應對典型的互聯網突變負載(flash-crowds)場景、保障應用服務質量[2](quality of service, QoS)依舊面臨挑戰(服務質量是指應用軟件對時間要求的滿足程度,響應時間是其重要的度量指標之一,比如用戶服務質量為5 s,即表示用戶從請求發起到請求響應的時間間隔不應超過5 s).
近年來,輕量級容器技術應運而生,其本質是模擬進程運行環境,具有資源占用少、應用啟動快等特點[3],其正逐步成為支撐微服務運行的主流架構平臺.容器具有秒級資源供給的特點,可很好地滿足互聯網應用負載突變對實時資源供給的需求.然而,已有方法或受限于物理機靈活性不夠,資源難以彈性供給;或受限于虛擬機資源的供給分鐘級時效性,通常只能適用于周期變化(time-of-day)的負載模式.如京東采用容器作為2015年“618”限時搶購活動,用戶訪問數增長率高于預期,導致部分應用構件出現“無響應”、“卡頓”等現象.其原因是應用性能模型的參數選擇受限于訓練集,缺少運行時自我調整的能力.其中,性能模型是評估應用資源需求、實現彈性供給的依據.
本文提出了一種基于前饋控制、面向負載突變場景的容器資源按需供給方法,該方法采用排隊論刻畫應用負載、資源消耗和響應時間的關聯關系,構造應用性能模型.同時,使用模糊自適應卡爾曼濾波實現模型參數的運行時調整,進行應用響應時間預測.最后,以響應時間是否違約QoS作為資源彈性供給的依據.
本文的貢獻主要有3點:
1) 提出一種基于容器的應用彈性供給框架,利用容器輕量級特點,提高了資源供給的實效性.
2) 提出一種基于預測的應用突變負載估算方法,利用模糊自適應卡爾曼濾波快速收斂的特點,提高了突變負載的預測準確性和資源供給的有效性.
3) 實驗結果顯示,本方法對響應時間預測的誤差率小于10%.在突發負載的場景下,相比已有方法,可以有效保障應用的服務質量.
已有工作主要面向物理機和虛擬機場景實現資源的彈性供給.文獻[4-10]針對物理資源難以快速供給的特點,或采用容量規劃,以服務質量作為約束條件,估算應用的峰值資源需求;或采用準入控制機制,根據資源供給量反推應用可承受的峰值負載,通過拒絕服務策略來保障應用的服務質量.如Cherkasova等人[9]提出的基于準入控制機制,建立會話與吞吐量的損失模型,推演資源的供給需求.又如Robertsson 等人[10]提出的基于線性模型的資源需求方程組,在保障應用質量的前提下估算資源需求的峰值,從而達到資源按需供給的目的.文獻[11-17]考慮虛擬機性能開銷因素,采用模型驅動的方法刻畫虛擬化環境下應用的資源需求變化,并以此作為資源提供的依據.這些方法通常采用增強學習(reinforcement learning)、統計學習(statistical learning)等機制進行模型參數訓練.如Karlsson等人[15]提出基于性能隔離的方法分析每個服務實例的資源需求,分別對每種服務構建性能變化模型,從而進行自適應資源供給;文獻[18-21]考慮虛擬機之間性能相互干擾問題,采用統計機器學習(statistical machine learning)、模糊控制(fuzzy control)、概率論(probability theory)等方法刻畫出虛擬機之間性能相互干擾對應用資源供給的影響,并以此作為應用資源供給的依據.如Bodk等人[13]提出的基于機器學習的方式,通過歷史數據集合對應用模型的性能參數進行規則訓練,并根據得到的資源供給規則進行資源動態調整.然而,由于虛擬機資源供給是分鐘級的時效性,因此上述方法通常只適用于負載隨時間周期性變化的應用場景.
綜上所述,已有方法或受限于物理機靈活性不夠,資源難以彈性供給;或受限于虛擬機資源的供給時效性,難以滿足互聯網應用負載突變的場景.因此,本文引入容器作為互聯網應用的載體,利用其秒級資源供給的特點,滿足負載突變的需求.具體而言,本文提出了一種面向微服務架構的容器級彈性供給方法,基于卡爾曼濾波收斂快、無需保存歷史數據的特點,對服務響應時間進行預測,并根據預測結果的實現資源的彈性供給,彌補已有研究工作難以應對突發負載的不足.
總體框架如圖1所示,本方法以每個應用構件的資源使用率及負載等參數構建應用性能模型,利用自適應卡爾曼濾波器對服務響應時間進行預測,并通過模糊邏輯對預測模型進行實時調整,最終以服務質量是否違約作為容器調度標準,達到資源彈性供給的目的.

Fig. 1 Approach overview圖1 方法總體框架及流程
系統方法流程可描述為:
① 數據采集器采集每個容器的負載以及CPU、內存等系統資源使用率.
② 性能建模器基于排隊論,以步驟①中資源使用率作為基準,構建應用性能模型,刻畫負載和響應時間的關聯關系,詳見3.1節.
③ 響應時間預測器通過卡爾曼濾波器對性能模型參數進行運行時估算,估算是以滿足預測和實測響應誤差預期為收殮條件,詳見3.2.1節.
④ 前饋控制器通過模糊控制器分析殘差均值和方差,得到卡爾曼濾波器控制參數的前饋調整值,詳見3.2.2節.
⑤ 容器調度器判斷響應時間的預測值是否違背了應用服務質量,并根據調度算法進行調度,詳見第4節.
⑥ 執行容器擴展、收縮或者遷移后,繼續執行步驟①,形成方法閉環.
負載是影響應用資源需求的主要因素,本節通過Jackson網絡排隊模型構建負載與QoS的關聯關系,并以QoS是否違約作為資源供給的依據.具體而言,本節首先利用Jackson網絡排隊論構建負載、資源使用率與響應時間的性能模型,然后采用卡爾曼濾波算法對模型中的未知參數進行預測,并通過模糊邏輯(前饋控制器)校正濾波器中的控制參數,以達到提高響應時間預測準確性,保障QoS的目的.在本節,QoS特指應用的響應時間.
3.1 基于Jackson網絡排隊的應用性能模型
Jackson開環網絡是適合微服務架構的應用性能模型,其原因包括[22]:
1) 微服務架構中應用構件是相互獨立的,模塊之間通過消息總線進行通信,沒有狀態信息存在,滿足Jackson網絡排隊模型下節點(應用構件即節點)相互獨立、滿足指數分布的約束;
2) 微服務架構下應用構件之間通過消息進行交互,滿足Jackson網絡是開環、節點輸入符合泊松分布的假設;
3) 應用構件在處理請求后,可選擇進入下一個節點或者離開網絡.
用戶請求會在節點中跳轉,經過相關應用構件的處理,最后響應給用戶.當某個應用構件存在多個實例時候,采用輪循調度(round-robin scheduling)策略.如圖2所示,為了區分同一應用構件的不同實例,本文定義:f為用戶請求流,j是應用構件,i是應用構件j的第i個實例.f,j,i,三者的關系可描述為:1個用戶請求f將會流經多個應用構件j1,j2,…,jn,每個應用構件j都含有多個實例,如j(ik)1≤k≤m表示應用構件j的第k個實例,共有m個實例,每個實例都運行在容器中.由于應用構件的資源偏好不同(如CPU密集集型、IO密集集型),導致容器出現的偏好資源不同,定義偏好資源為容器CPU、內存、磁盤IO中使用率最高的資源;uj∈[0,1)是應用構件j的偏好資源使用率;u0j是指當應用構件j在無負載情況下的偏好資源使用率;γj i是指應用構件j的第i個容器的并發數,即每秒到達的請求數,滿足泊松到達過程;Tj i是指應用構件j的第i個容器的服務處理時間;Tj是指應用構件j的平均服務處理時間;d是指用戶請求流f的總網絡傳輸時間;B是指服務流f的響應時間;τj是服務j的負載與資源使用率的相關系數.根據Jackson網絡流量方程及網絡性能方程有[23]:
(1)
(2)
其中,uj,u0j,γj i,B是通過監測獲取的,τj是根據歷史數據給出的經驗值,Tj i,d是難以監測的,需要通過預測進行估算.所謂彈性供給是指響應時間B在相對固定的取值區間前提下,應用的資源需求.可見,Tj i,d是進行自適應資源供給的關鍵要素.

Fig. 2 Micro-service architecture network queuing model圖2 微服務架構網絡排隊模型
3.2 響應時間T的預測值
卡爾曼濾波算法是由Kalman[24]在1960年提出的一種最優線性狀態估計方法,常被用于軌跡跟蹤預測領域.其優點是采用遞歸的方法來解決線性濾波問題,只需當前的測量值和前一個采樣周期的估計值就能夠進行狀態估計.其缺點主要有2點[25]:
1) 需要定義精確的狀態轉移矩陣(將目標從k-1狀態轉移到k狀態),這個矩陣是符合預測目標軌跡變化規律的數學模型,這個模型的精確程度將影響預測的準確性,偏離嚴重時可能會導致濾波發散.
2) 由于遞歸的特性,其對過去所有觀測值都給予以均一的權值,即對新老數據給予相同的置信度,這樣隨著時間的推移,采集到的數據越來越多,使得算法失去修正能力,即數據飽和.
由于每個應用構件的負載是非線性無規律的,很難根據卡爾曼濾波的要求定義一個精確的狀態轉移矩陣,另一個方面當負載突發性變化時,由于歷史數據的影響會導致濾波因“慣性”發散,所以,傳統卡爾曼濾波無法適應時變結構的微服務架構.而基于模糊邏輯的自適應卡爾曼濾波算法是采用前饋控制的方式,根據濾波預測值實時對濾波模型參數進行調整,其方法原理如圖3所示,多篇文獻論述了該算法在實時軌跡追蹤系統中的有效性[26-27].

Fig. 3 Fuzzy adaptive Kalman filter圖3 模糊自適應卡爾曼濾波器原理圖
3.2.1 自適應卡爾曼濾波算法對響應時間的預測
自適應卡爾曼濾波(adaptive Kalman filtering, AFK)原始方程如下:

(3)

(4)
其中,X(k)是預測矩陣,其值為(Tj,d)T?j,代表服務處理時間與總時延的矩陣;Z(k)為X(k)的狀態矩陣;H(k)負責將可觀測值的多維向量轉換到待預測值的多維向量,其值為(uj,u0j,γj i,B)T?i的狀態描述向量,是由應用實例的資源利用率、負載與響應時間的所構成的矩陣;Q(k)是過程激勵噪聲協方差矩陣,其符合Q(k)~N(0,Q)的高斯分布;R(k)是測量噪聲協方差矩陣,其符合R(k)~N(0,R)的高斯分布,一般認為應將這2個噪聲矩陣設置為零均值白噪聲[25],但是負載變化往往是不確定的,如負載突變場景,所以為了使系統的彈性資源供給具有實時性,過程激勵噪聲協方差矩陣以及測量噪聲協方差矩陣應該隨時間自適應調整,現將噪聲矩陣設為

(5)

(6)
其中,T和U為時變的調整值,可得到預測方程如下:

(7)

(8)

修正的狀態估計方程如下:


(9)
K(k+1)=P(k+1|k)H(k)T(H(k)×
(10)
(11)
P(k+1|k)=F(k+1)P(k|k)F(k+1|k)T+

(12)

3.2.2 前饋控制器對預測模型的調整
基于3.2.1節所述,判斷濾波器是否需要更新的依據就是監測殘差,理想情況下殘差為零均值白噪聲,即濾波器可以完美自適應,如果殘差不為零均值白噪聲,則說明濾波器預測出現誤差.由于殘差方差、殘差均值與Q和R相關,可以通過估計殘差方差與均值,然后進行模糊推理,最后調整U和T的值,已達到使卡爾曼濾波算法適應時變結構的目的.殘差方差計算方程如下:
P(r)=F(k+1|k+1)(H(K)P(k|k)
(13)
所以,設計一個模糊函數來不斷監視殘差方差P(r)和均值的變化,然后根據模糊規則調整T和U,以改變噪聲矩陣,從而對卡爾曼濾波器的方誤差矩陣見式(11)進行調整,使其一直執行最優估計,以滿足時變需求.
本文采用TS模糊邏輯系統,對殘差方差及均值建立三角形隸屬度函數及模糊規則,如圖4所示.例如,如果殘差方差越來越大,均值也漸漸遠離Zero,則應該減小過程激勵噪聲T并增加測量噪聲U.從而建立模糊邏輯規則表,如表1所示,表1中的Zero代表T和U不需要變化,Small代表增加T減小U,Large代表減小T增加U,Medium代表同時增加T和U.根據以上原則,通過MATLAB仿真出一些列系統的誤差曲線,并將其和常規卡爾曼濾波器的誤差曲線進行橫向對比,從而推斷該組數據的可行性及有效性.再將每次實驗結果與前一次實驗結果進行縱向對比,以確定效果更好的線性組合.最后經過100組仿真實驗,確定了模糊自適應控制器(fuzzy logic adaptive controller, FLAC)的輸出規則,這里僅列舉2個重要的FLAC規則:
1) 當且僅當殘差方差為Small、殘差均值為Zero時,T=P(r)×0.3+0.8,U=-P(r)×0.2+1.9;
2) 當且僅當殘差方差為Large、殘差均值為Small時,T=-P(r)×0.5+0.6,U=P(r)×0.1+1.4.
根據上述FLAC規則動態調整濾波器的參數以保障預測結果的有效性.

Fig. 4 Residual mean and residual variance membership function圖4 殘差均值和殘差方差隸屬度函數

ResidualMeanZeroMeanSmallMeanLargeVarianceZeroSmallZeroZeroVarianceSmallSmallZeroLargeVarianceLargeLargeLargeMedium




算法1. 容器調度算法.
① global varT,U;
② const varRESOURCE_MAX_LIMIT,RESOURCE_MIN_LIMIT,TIME_MAX_LIMIT;
③ define funcAKF(X(i),Z(i))(Variance(P(r)),Average(P(r)),X(i));
④ define funcFLAC(Variance(P(r)),Average(P(r)))(T,U) ;
⑤ define funcResponseTime(X(i))B;
⑥ define funcMigrate(Service);
⑦ define funcExpand(Service);
⑧ define funcContract(Service);
⑨ Input:X(i)=(Ti,d),Z(i)=(ui,ubi,ri,B);










系統架構如圖5所示,分為3個部分:自動部署模塊、資源彈性調度模塊、服務注冊與發現模塊.主要工作流程如下:
系統采用主從結構,用戶在模板倉庫中選擇或創建應用所需配置,然后將一組配置模板傳給應用部署器,應用部署器對配置模板進行容錯驗證、組合之后將應用配置信息傳給全局調度器,全局調度器根據當前各個子節點的資源使用情況選擇合適的子節點進行服務部署,并將服務信息持久化存儲,子節點的控制器收到調度命令后,進行具體調度,另一方面,控制器也會實時收集服務的信息匯報給主控節點的調度器,當有新服務產生時,會自動向主控節點的存儲器進行服務注冊.

Fig. 5 System architecture圖5 系統架構圖
5.1 自動部署模塊
自動部署模塊由模板倉庫與應用部署器組成,模板倉庫中提供了大量可參考的部署模板及應用服務,用戶可以根據服務需求選擇具體應用及其版本號,當模板倉庫不能滿足用戶服務需求時,用戶可以根據模板格式自主創建模板.
應用部署器根據模板倉庫傳來的一系列模型信息,對服務所需的組件間的關聯關系進行分析,并將分析結果持久化到配置文件中,這些信息將會決定各個服務的部署及啟動順序,也是服務注冊與發現的基本依賴.另一方面,系統會分析測試生成的配置文件,進行容錯性驗證的同時,也會生成相應的Jackson網絡排隊模型,該模型是系統進行彈性資源調度的關鍵所在.
5.2 資源彈性調度模塊
資源彈性調度模塊由主控節點的調度器及子節點的控制器構成.調度器會根據用戶和控制器傳來的調度請求進行全局調度分配,調度器的主要調度原則有:保障服務運行的優先級、將CPU密集型服務與IO密集型服務混布、保障各服務公平的使用資源等規則.
由于容器與傳統虛擬機不同,創建容器的時候可以不對其做資源限制,讓其根據服務的運行需求自行申請或釋放資源,這樣可以最大化地利用宿主機的物理資源,但是采取這種方式會同時引入資源競爭的問題.如當宿主機內多個容器的內存使用量同時突升時,可能會導致操作系統強制停止容器(out of memory kill);當某個容器的網絡傳輸量很大時,可能會導致主控節點無法接收到子節點的心跳包,導致系統調度停滯等問題.所以,需要在控制器中添加1個資源限制模塊,保證系統進程的基本資源.另外,當宿主機中各個服務的資源使用量都很高,而且總使用量已達到理論限制值時,是對服務進行遷移,還是對服務進行擴展?服務遷移會有一定的延遲及網絡開銷,服務擴展雖然開銷較小,但是很難保障原有服務會持續保持高資源利用率的狀態,所以,有可能在服務擴展后,又需要進行服務收縮,導致系統頻繁進行調度.為避免此情況,控制器會實時收集各個服務的負載、資源使用、性能等數據通過卡爾曼濾波對系統的輸出響應時間進行實時預測,然后通過模糊邏輯理論進行分類與推理,最終得出服務是否需要進行服務遷移或者進行服務伸縮.
5.3 服務注冊與發現模塊
服務注冊及發現模塊采用分布式的一致性鍵值存儲系統實現,內部采用層級樹狀存儲結構,可以很高效地存儲服務之間的關聯關系.服務注冊及發現的過程可描述為,當子節點有新的服務生成時,控制器會根據該服務的配置信息,將服務的網絡地址及端口號注冊給主控節點的服務信息存儲器,存儲器會分析服務的配置信息對服務自動進行分類與組合.
本文所述方法已在基于Docker的容器虛擬化環境下進行了原型實現.本節將通過實驗與已有方法進行對比,驗證系統模型在突發性負載場景下預測的準確性,以及在負載周期性變化場景下的有效性.
6.1 實驗部署環境
實驗選取6臺相同配置的服務器,Intel Core i7 CPU 3.40 GHz,8 GB內存以及千兆網卡,選取其中1臺作為Master節點,4臺作為Slave節點,分別為Slave1~Slave4,所有節點都安裝有CentOS7的minimal系統以及Docker 1.7.另外1臺用于客戶端的負載發生器,裝有Windows系統和JMeter壓力測試程序.
實驗用例選取QCon San Franciso 2014會議上的微服務架構最佳實踐——Event Sourcing + CQRS作為Cloudsuite中CloudStone的基礎應用,該應用分為4個自包含的應用構件,每個應用構件都可以單獨部署,服務之間相互獨立.
下述實驗中的誤差是指真實值與估計值的偏差大于5%的點.
6.2 實驗設計
實驗分為4個部分:
1) 通過MATLAB模擬系統運行情況,比較模糊自適應式卡爾曼濾波器對系統響應時間的預測值與模擬值的擬合情況,驗證本文算法的準確性.另一方面將調整前饋控制器中的模糊規則,并再次進行實驗驗證本文模糊規則的適用性.
2) 通過JMeter負載生成器對真實系統進行壓力測試,并觀察系統輸出響應時間的變化曲線.實驗負載將模擬負載周期性變化、負載平穩、負載平穩上升、負載急劇上升、負載急劇下降等情況,然后記錄應用響應時間,觀察各應用的容器數量變化情況,從而驗證系統實現的有效性.
3) 通過與已有工作中的資源供給算法進行對比,使用MATLAB模擬生成負載-使用率的數據集,作為系統輸入,分別對增強學習、模糊控制、準入控制方式進行實驗,觀察各個算法對負載變化的響應情況,驗證已有工作不適用于本文所述的問題場景.
4) 通過模擬負載隨時間規律變化的情況,對比本文方法與已有工作在系統輸入負載的預測準確率.從而驗證本文方法在負載周期性變化場景下的有效性.
6.3 模糊自適應卡爾曼濾波器的預測效果
本實驗的目的是驗證模糊自適應式卡爾曼濾波算法(fuzzy adaptive Kalman filtering, FAKF)對系統輸出響應時間趨勢的預測能力.實驗每隔4 s進行1次預測,共迭代進行實驗400余次.實驗結果如圖6所示,濾波器初始收斂時間一般在10個周期左右,即小于40 s,當出現負載突變的情況,雖然濾波器需要3~5個周期,即20 s左右的時間才能收斂,但是濾波器對整體變化趨勢的判斷較好,可以為資源供給提供出有效的判斷信息.該實驗證明了濾波算法可以在突發負載場景下進行自我調整,并得到有效預測.

Fig. 6 Fuzzy adaptive Kalman filtering prediction experiment圖6 模糊自適應卡爾曼濾波預測實驗
系統初始化參數及模糊規則中的控制參數隨機賦值,再次進行實驗.如圖7所示,觀察到系統方法預測結果誤差率到達30%左右,并且在200~400 s等多個時間段出現不收斂的情況.說明初始參數及模糊規則中的控制參數對預測值有較大影響,應該參考本文3.2.2節所述方法進行賦值.

Fig. 7 Random control parameter experiment圖7 隨機控制參數實驗
6.4 模型有效性及準確性分析實驗
本實驗的目的是驗證系統模型在真實使用場景下,應對頻繁變化的負載,系統的輸出響應時間的平穩性.實驗通過JMeter負載發生工具,模擬負載突發性變化場景.系統負載變化如圖8所示,系統輸出響應時間如圖9所示.系統初始化時,將2個服務模塊創建在Slave1上,其余1個服務創建在Slave2上,Slave3和Slave4為空.觀察負載變化,其中0~200 s模擬30訪問數s的穩定負載的情況,以充分保障濾波器預熱收斂;200~300 s模擬30~60訪問數s的負載變化,觀察到系統的輸出響應時間也呈上升趨勢,此時由于各個服務的資源使用情況尚未達到限制值,所以并沒有發生服務擴展,但是由于Slave1上容器使用資源總量達到限制值,所以,將Slave1上的2個服務遷移到了Slave3和Slave4上,可以觀測到遷移過程中系統輸出響應時間存在小幅震蕩;300~400 s模擬50訪問數s的平穩負載,可以觀測到系統輸出響應時間也處于平穩狀態;600~700 s模擬50~100訪問數s的負載突增,可以觀測到系統在650 s左右時,對Slave1和Slave2的某些服務進行了擴展,導致系統輸出響應時間平緩下降;700~800 s模擬100~30訪問數s的負載突降情況,可以觀測到系統在750 s左右,對服務進行了收縮.800~1 600 s又再次模擬了這個負載變化過程,系統輸出響應時間基本保持前800 s的變化規律.但是前800 s的負載突增是緩慢的增加趨勢,然后突增至“峰值”,而后800 s的負載突增是模擬的突降至“谷底”后又突增至“峰值”,以此證明系統可以應對實時性突發負載.此實驗中雖然系統輸出響應時間隨負載變化有變化趨勢,但是整體保持在30~40 ms的平穩曲線上,以此證明了本模型的有效性及可用性.

Fig. 8 Workload curve圖8 系統負載曲線

Fig. 9 Output responses time curve圖9 系統輸出響應時間曲線
6.5 與已有模型的對比實驗
為說明已有方法在本文所述場景中的不適用性及驗證本文方法的有效性,本節將與3種比較經典的資源供給算法進行對比.本節實驗都MATLAB模擬輸入負載作為相同的基準測試集數據,首先收集CloudStone中性能數據與輸入負載等數據形成訓練集,然后依賴該訓練集數據,形成基準測試集數據.由于已有方法多為對負載進行預測,因此,通過本文方法預測得到響應時間后,根據式(1)(2)轉化為相應的負載,實驗結果如圖10所示,預測誤差率小于5%,負載變化趨勢預測準確.

Fig. 10 FAKF algorithm fitting curve圖10 模糊自適應卡爾曼濾波算法負載擬合曲線
6.5.1 基于增強學習的資源供給方法
由于增強學習(reinforcement learning, RL)是一種離線測試后在線調整的算法,本實驗首先收集CloudStone的負載與系統各個資源使用率的數據,形成負載-使用率數據對,作為訓練集.然后,根據Martinez等人[11]的RL算法訓練出資源供給規則,帶入基準測試集中的資源使用率數據,并觀察輸出負載與真實負載的擬合情況.
如圖11所示,RL算法誤差率約為25%左右,通過實驗觀察發現RL算法在負載突發性變化時收斂較慢,需要30~50個周期的時間才能完全收斂,如150~200 s時間段,甚至有可能出現不收斂的情況,如230~270 s時間段.微服務變更頻繁是導致以歷史數據為基準的RL算法準確度較低的一個主要原因.
6.5.2 基于模糊控制的資源供給方法
本實驗以Lama等人[19]提出的適用于3層Web架構的模糊邏輯資源供給算法作為驗證.將基準測試集中的資源使用率數據帶入模糊規則,并觀察輸出負載與真實負載的對比情況.
如圖12所示,模糊邏輯算法誤差率約為75%左右,通過實驗觀察發現基于模糊邏輯的資源供給算法對模糊函數的準確度要求較高,但是模糊函數的設計上缺乏理論指導,一般都是人為經驗給出的,所以并不適用于結構復雜的微服務架構.另一方面,模糊函數對負載變化規律要求較高,當出現負載變化不規律,如50~100 s和150~300 s時間段這種負載突發性變化時,基于模糊規則的資源供給方式準確率較低,無法保障應用服務質量.

Fig. 12 Fuzzy logic algorithm load fitting curve圖12 模糊邏輯算法負載擬合曲線
6.5.3 基于反饋控制的資源供給方法
反饋控制方法對比RL算法和模糊控制算法,不僅減少了訓練規則的復雜度,而且提高了系統運行的穩定程度,但是控制參數的設計卻需要大量領域經驗,所以一般適用于負載隨時間規律變化的場景.本實驗以Lu等人[4]的反饋控制算法作為驗證,將基準測試集帶入反饋控制算法,觀察預測負載與真實負載的對比情況.
如圖13所示,反饋控制算法誤差率約為20%左右,通過實驗觀察發現誤差點多集中在初始化階段及負載突發性變化階段,如70~100 s時間段和200~260 s時間段,反饋控制算法的收斂時間較長.其原因在于控制參數是根據領域經驗給出的固定的值,不能自適應調整,無法應對負載無規律變化的場景.

Fig. 13 Feedback control algorithm load圖13 反饋控制算法負載擬合曲線
6.5.4 總 結
通過對比實驗發現,已有工作在基于微服務且負載突發性變化的場景下,對負載的擬合度相對較低,甚至出現發散的情況,而本文方法誤差率較低,且誤差點多集中在初始化階段,可準確預測負載變化趨勢.
6.6 周期性負載變化場景下模型有效性驗證
本節實驗對比本文方法與Lama等人[28]提出的基于RAMA反饋控制方法對負載情況的預測.通過MATLAB模擬負載隨時間規律性變化的應用場景,將負載-使用率參數對作為測試集,根據RAMA算法得到對負載的預測數據集.如圖14所示,通過實驗觀察發現RAMA反饋控制算法在負載隨時間規律性變化的場景下擬合度較高,誤差率小于5%.

Fig. 14 Workload comparison with RAMA algorithm圖14 本文方法與RAMA算法的負載預測對比實驗
本文方法誤差率為5%左右,略高于RAMA算法,但是,由于采用自適應調整機制,雖然前2個周期內預測準確率要小于RAMA算法,但是本文方法收斂快速,在經過2~3個周期調整后,參數趨于穩定,預測準確率逐步提升,在第4個周期時,準確率要高于RAMA算法.
本文提出了一種基于模糊自適應式卡爾曼濾波算法的彈性資源供給模型,通過實時預測系統的輸出響應時間,對系統中各個服務進行遷移或者伸縮,保證了系統的可靠運行.雖然本文在微服務場景下對該模型進行了驗證,但是本文的預測算法同樣適合于所有滿足Jackson網絡排隊模型的傳統架構的應用.
[1]Savchenko D I, Radchenko G I, Taipale O. Microservices validation: Mjolnirr platform case study[C]Proc of the 38th Int Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO). Piscataway, NJ: IEEE, 2015: 235-240
[2]Ferguson P, Huston G. Quality of service: Delivering QoS on the Internet and in corporate networks[J]. Computer Communications, 1999, 22(10): 980-981
[3]Soltesz S, P?tzl H, Fiuczynski M E, et al. Container-based operating system virtualization: A scalable, high-performance alternative to hypervisors[J]. ACM SIGOPS Operating Systems Review, 2007, 41(3): 275-287
[4]Lu Chenyang, Abdelzaher T F, Stankovic J A, et al. Feedback control architecture and design methodology for service delay guarantees in Web servers[J]. IEEE Trans on Parallel and Distributed Systems, 2006, 17(9): 1014-1027
[5]Kundu S, Rangaswami R, Dutta K, et al. Application performance modeling in a virtualized environment[C]Proc of the 16th Int Symp on High Performance Computer Architecture (HPCA). Piscataway, NJ: IEEE, 2010: 307-318
[6]Lama P, Zhou Xiaobo. Efficient server provisioning with control for end-to-end response time guarantee on multitier clusters[J]. IEEE Trans on Parallel and Distributed Systems, 2012, 23(1): 78-86
[7]Cao Junwei, Zhang Wen, Tan Wei. Dynamic control of data streaming and processing in a virtualized environment[J]. IEEE Trans on Automation Science and Engineering, 2012, 9(2): 365-376
[8]Lu Ying, Abdelzaher T F, Lu Chenyang, et al. Feedback control with queueing-theoretic prediction for relative delay guarantees in Web servers[C]Proc of the 9th Real-Time and Embedded Technology and Applications Symp. Piscataway, NJ: IEEE, 2003: 208-217
[9]Cherkasova L, Phaal P. Session-based admission control: A mechanism for peak load management of commercial Web sites[J]. IEEE Trans on Computers, 2002, 51(6): 669-685
[10]Robertsson A, Wittenmark B, Kihl M, et al. Design and evaluation of load control in Web server systems[C]Proc of the 8th American Control Conf. Piscataway, NJ: IEEE, 2004: 1980-1985
[11]Martinez J F, Ipek E. Dynamic multicore resource management: A machine learning approach[J]. Micro, 2009, 29(5): 8-17
[12]Tesauro G, Jong N K, Das R, et al. A hybrid reinforcement learning approach to autonomic resource allocation[C]Proc of the 3rd Int Conf on Autonomic Computing (ICAC). Piscataway, NJ: IEEE, 2006: 65-73
[14]Xu Chengzhong, Rao Jia, Bu Xiangping. URL: A unified reinforcement learning approach for autonomic cloud management[J]. Journal of Parallel and Distributed Computing, 2012, 72(2): 95-105
[15]Karlsson M, Karamanolis C, Zhu Xiaoyun. Triage: Performance isolation and differentiation for storage systems[C]Proc of the 12th Int Workshop on Quality of Service (IWQOS). Piscataway, NJ: IEEE, 2004: 67-74
[16]Wu Heng, Zhang Wenbo, Zhang Jianhua, et al. Benefit-Aware on-demand provisioning approach for virtual resources[J]. Journal of Software, 2013, 24(8): 1963-1980 (in Chinese)(吳恒,張文博,張建華,等.一種收益敏感的虛擬資源按需提供方法[J].軟件學報, 2013, 24(8): 1963-1980)
[17]Wang Kai, Hou Zifeng. An adaptive scheduling method of weight parameter adjustment on virtual machines[J]. Journal of Computer Research and Development, 2011, 48(11): 2094-2102 (in Chinese)(王 凱, 侯紫峰. 自適應調整虛擬機權重參數的調度方法[J]. 計算機研究與發展, 2011, 48(11): 2094-2102)
[18]Diao Y, Hellerstein J L, Parekh S. Optimizing quality of service using fuzzy control[G]Management Technologies for E-Commerce and E-Business Applications. Berlin: Springer, 2002: 42-53
[19]Lama P, Zhou Xiaobo. Autonomic provisioning with self-adaptive neural fuzzy control for end-to-end delay guarantee[C]Proc of the 18th Int Symp on Modeling, Analysis & Simulation of Computer and Telecommunication Systems (MASCOTS). Piscataway, NJ: IEEE, 2010: 151-160
[20]Lama P, Zhou Xiaobo. Autonomic provisioning with self-adaptive neural fuzzy control for percentile-based delay guarantee[J]. ACM Trans on Autonomous and Adaptive Systems, 2013, 8(2): 9-40
[21]Wang Sa, Zhang Wenbo, Wu Heng, et al. Approach of quantifying virtual machine performance interference based on hardware performance counter[J]. Journal of Software, 2015, 26(8): 2074-2090 (in Chinese)(王卅, 張文博, 吳恒, 等. 一種基于硬件計數器的虛擬機性能干擾估算方法[J]. 軟件學報, 2015, 26(8):2074-2090)
[22]Shanthikumar J G, Buzacott J A. Open queueing network models of dynamic job shops[J]. International Journal of Production Research, 1981, 19(3): 255-266
[23]Gandhi A, Dube P, Karve A, et al. Adaptive, model-driven autoscaling for cloud applications[C]Proc of the 11th Int Conf on Autonomic Computing (ICAC’14). Berkeley, CA: USENIX Association, 2014: 57-64
[24]Kalman R E. A new approach to linear filtering and prediction problems [J]. Journal of Basic Engineering, 1960, 82(1): 35-45
[25]Brown R G, Hwang P Y C. Introduction to Random Signals and Applied Kalman Filtering: With MATLAB Exercises and Solutions[M] . New York: Wiley Heyden Ltd, 1997
[26]Sinopoli B, Schenato L, Franceschetti M, et al. Kalman filtering with intermittent observations[J]. IEEE Trans on Automatic Control, 2004, 49(9): 1453-1464
[27]Frühwirth R. Application of Kalman filtering to track and vertex fitting[J]. Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment, 1987, 262(2): 444-450
[28]Lama P, Guo Yanfei, Zhou Xiaobo. Autonomic performance and power control for co-located Web applications on virtualized servers[C]Proc of the 21st Int Symp on Quality of Service (IWQoS). Piscataway, NJ: IEEE, 2013: 1-10

Hao Tingyi, born in 1989. Master. His main research interests include network distributed computing and software engineering.
Wu Heng, born in 1983. Assistant researcher. His main research interests include network distributed computing and software engineering, etc.

Wu Guoquan, born in 1979. PhD. Associate professor of the Institute of Software, Chinese Academy of Sciences. Member of CCF. His main research interests include network distributed computing.

Zhang Wenbo, born in 1976. PhD. Professor and PhD supervisor. His main research interests include network distributed computing and software engineering, etc.
Elastic Resource Provisioning Approach for Container in Micro-Service Architecture
Hao Tingyi1,2,3, Wu Heng1, Wu Guoquan1,2, and Zhang Wenbo1
1(TechnologyCenterofSoftwareEngineering,InstituteofSoftware,ChineseAcademyofSciences,Beijing100190)2(StateKeyLaboratoryofComputerScience(InstituteofSoftware,ChineseAcademyofSciences),Beijing100190)3(UniversityofChineseAcademyofSciences,Beijing100049)
As a logical abstraction of physical resources, container-based virtualization has been adopted widely in cloud computing environment for elastic resource provisioning, which is lower overhead and potentially better performance. Nowadays, more and more enterprises seek to move large-scale Internet-based applications with micro-service architecture into the container-based infrastructure, and focus on efficient resource management. Unfortunately, many existing approaches were restricted by physical machine or virtual environment, the resources are hard to be elastically or timely provisioning. Therefore, Internet-based applications may suffer from frequent service-level agreement(SLA) violations under flash-crowd conditions. To address this limitation, this thesis proposes a quality of service(QoS) sensitive resource provisioning approach for containers in micro-service architecture based on the feed-forward control. We employ a performance model based on queuing theory. Firstly, we capture the relationship among workload, resource utilization and response time. Secondly, we predict the response time with fuzzy federal adaptive Kalman filtering based on the feed-forward control, and if the prediction result is against pre-defined QoS, elastic resource scheduling process is triggered. Experimental results based on CloudStone show that the feed-forward algorithm converges quickly. The prediction result of the response time has only maximum error of 10%, and is more effective and accurate compared with existing approaches. Furthermore, our approach can effectively protect resource provisioning for flash-crowds workload.
container virtualization; fuzzy adaptive Kalman filtering; elastic resource provisioning; micro-service architecture; flash-crowds
2015-12-09;
2016-04-01
國家自然科學基金項目(61472407,61363003) This work was supported by the National Natural Science Foundation of China (61472407, 61363003).
吳恒(wuheng09@otcaix.iscas.ac.cn)
TP319