虛擬機(Visual Machine)的云平臺的自動伸縮擴容(auto-scaling)技術

??? 云計算平臺中允許客戶依據應用的負載進行云計算資源的彈性動態伸縮(理想的情況是實現一個用多少付費多少的模型,最大限度地降低用戶的運營成本)

??? 在進行討論之前,先對幾個名詞進行定義

?????? 1)客戶:使用云服務的人,在云上部署他的應用

?????? 2)用戶: 使用部署在云上的應用的人

???

Auto-scaling的基礎

??? 云計算的一個關鍵特點是彈性伸縮,但它是一把雙刃劍,因為它允許應用依據負載動態地申請和釋放資源,但是確定一個合適的資源量并不容器,那么需要一個系統自動地依據負載來調整資源量(盡可能得減少人工的干預)。

??? 資源的伸縮主要有兩種:

1)垂直伸縮:簡單的說就是伸縮的時候以虛擬機為單位,直接增加或減少虛擬機的數量

2)水平伸縮:對虛擬機的內部的資源(如CPU、存儲等)進行伸縮

??? 但大多數操作系統在水平擴容時都需要重新啟動虛擬機,因此很多云服務商都只提供垂直伸縮。

??? 那怎么樣來判斷一個一個auto-scaling系統是否合格呢:

1)在客戶(應用的部署者)和終端用戶之間的Service Level Agreement (SLA),比如說滿足一定的響應時間

2)在云服務提供商和客戶之間的SLA,比如說滿足云平臺的一定的資源利用率

??? Auto-scaling的實現主要面臨幾個問題:

1)Under-provisioning:即應用沒有獲得足夠的資源來應對用戶的請求,不能滿足SLA,需要增加更多的資源

2)Over-provisioning:即應用在滿足SLA后還有過多的資源,客戶付出了不必要的成本

3)Oscillation:當伸縮的動作執行的過快時,可能會出現資源波動的現象(剛剛擴容又縮容)。可以伸縮后添加一個懶惰時間(此時不進行任何伸縮擴容)來避免波動

???? Auto-scalin系統一般包含四個部分:

?????????????? 1)Monitoring:監控系統主要是獲得系統和應用的狀態信息

???????????????????????? 硬件信息: CPU利用率,存儲利用率,網絡接口

???????????????????????? 操作系統進程:缺頁,CPU調度

???????????????????????? 負載均衡: 請求訪問隊伍的長度,當前對話的進程數量,拒絕請求的數量

?????????????? 2)Analysis: 分析監控系統的信息估計未來的資源使用情況和需求

      ? ? ?reactive:使用從監控系統獲得的最后的系統值進行判斷。不做任何預測,僅僅當檢測到系統負載變化時才會做出響應。難以應對突發的負載

? ? ? ? ? ?     proactive:著重通過預測未來的需求來完成對資源的分配

?????????????? 3)Planning: 制定一個合適的資源伸縮計劃

???????????????4)Execution:執行

?

?Auto-scaling技術

??????? 1? static threshold-based rule

    云服務提供商大多僅僅使用基于閾值的規則提供 reactive的自動伸縮 。這種方法是預先設定一個閾值,當系統狀態到達這個閾值時,就會觸發自動伸縮的功能。

    這種auto-scaling方法因其比較簡單,這對于客戶來說很有吸引力。但是它也有缺點:第一是為應用設定一個閾值需要對應用負載的趨勢有一個很深的認識,第二在面對突發的負載時,這種方法的時效性比較低,反應比較慢

    基于閾值的規則一般會設定最少兩個規則,一個用來擴容,一個用來縮容,例如:

    例子中x是系統狀態的值,thrU是設置的上閾值,thrL是設置的下閾值,durU的時間是在遇到這種情況是多少秒內會觸發,S是每次擴容的值,inU是這伸縮執行后多少時間內不進行任何伸縮(用于防止波動)

    舉一個簡單例子是,當平均的CPU資源利用率超過70%的時間持續超過5分鐘時,擴充兩個虛擬機,并且在接下來的10分鐘內不做任何伸縮

?

? ? ? ? 2? control theory

    控制變量u(例如 虛擬機的數量)目標系統的輸入,受控變量y(如CPU負載)是目標系統的輸出。    

    控制器通過調整控制變量u來保持受控變量y接近期望的值或者預先設定?的yref。為了實現這個目的,就要構建輸入與輸出之間的模型,它決定了輸入如何影響輸出的值。

? ? ? ? ? ? ?

    常見的控制器有以下幾種:

?      1)Fixed gain controllers(固定增益控制器):這類控制器比較簡單,在確定參數后,參數在控制器運行時間內不變

?      2)Adaptive controllers(自適應控制器):能夠依據條件的變化在線自動調整參數,適用于緩慢變化的負載環境,不適用與突變的環境

? ? ? ? ? ? ? ? ? ? ? 3)Model predictive controllers (模型預測控制器):基于模型和當前的輸出預測系統未來的行為

? ? ? ? ? ? ? ?控制論的效率取決于控制器的種類和目標系統的動態變化,構建一個可靠的映射輸入和輸出變量的模型并不容易

?

? ? ? ? 3? reinforcement? learning

    加強學習的方法無需任何先驗的知識,就能夠為每一個應用狀態設計一個最優的伸縮策略。它著重學習機構(例如,auto-scaler)和它的環境(例如應用)之間的直接交互

? ? ? ? ?      其中α是學習率(learning rate),γ 是貼現因子(discount factor)

    加強學習的方法主要有幾個缺點:

      1)初始的性能很差并且需要很長的訓練時間

        比較好的解決方法是在前期先用其他的代替方法來控制auto-scaling的系統,同時加強學習的模型也進行訓練,待訓練好時再使用加強學習 模型控制系統

? ? ? ? ? ? ? ? ? ? ?2)需要很大的狀態空間,在最簡單的形式中,查找表用于為每一個可能的狀態動作對存儲一個單獨的值,這些狀態是成指數級增長的,所以當查找表很大時,每一次訪問都可能需要很長的時間

        用查找表來表示Q函數并不高效,可以使用其他非線性的函數(如?neural networks, CMACs (Cerebellar Model Articulation Controllers), regression trees, support vector machines)

      3)最佳模型的適應性比較差,加強學習方法能夠很好地解決相對緩和的變化,但是對于突發的負載變化表現并不好,因為它需要尋找新的最佳策略

?

? ? ? ? 4? queuing theory

      排隊論可以用來估計系統的性能指標(例如隊伍的長度、請求的平均等待時間),可以分為簡單的隊列模型和復雜的隊列網絡

      排隊論的基礎機構如上圖所示,請求到達系統后將入隊,直到它們執行完才出隊。

      在一個標準的auto-scaling系統中,一個隊伍可由A/B/C/K/N/D(如:例如: M/M/1/?∞/?∞/FIFO?)來表示,其中K,N,D是可選的

        A:Inter-arrival time distribution(到達時間間隔分布)

        B:?Service time distribution. (服務時間分布)

            常見的A和B的值有:M,D,G

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? M:表示Markovian(馬爾可夫鏈),它指的是一個泊松分布的過程,它的特征是一個參數單位λ (表示每個時間單位到達的請求),因此到達時間或者服務時間將服從指數分布

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? D:表示為一個固定的值

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? G:對應于具有已知參數的一般分布

       ? ?C:Number of servers.(服務器數量)

? ? ? ? ?   ? ? ? K:System capacity or queue length(系統能力或隊伍長度):即系統最多能服務的用戶數量

? ? ? ? ? ? ? ? ? ? ? ? ? ? N:?Calling population (要求服務的總體)  

? ? ? ?      D:?Service discipline or priority order(服務紀律或優先次序): 先來先服務……

     ? ?隊列模型通常被用在一些固定的系統結構中,因為任何系統結構或者參數需求的變化都需要重新構建模型。此外隊列模型是一個分析工具,它還需要另外的一個組件來完成auto-scale。

? ? ? ? ? ? ? ? ? ? 總的來說排隊論在設計一個通用的auto-scaling系統時可能并不是一個最好的選擇。

?

?????? ?5? timeseries analysis

    時間序列是在一個固定的時間間隔(如每分鐘)采集系統的性能指標(如平均CPU負載)。它得到的結果X包含一組w(時間序列的長度)個觀察值

時間序列方法可以基于最新的q(滑動窗口值,q<=w)預測未來的時間序列的值。時間序列分析技術嘗試識別時間序列所遵循的模式,然后使用這種模式來推斷未來的價值。

時間序列模式可以用四種特性來描述:趨勢(trend),季節性(seasonality),周期性(cyclical),隨機性(randomness)。系統性能指標總體的趨勢(上升或者下降)的變化會在一個時間序列上重復出現(例如,日、周、月或季節)。趨勢主要表明系統性能指標的總體變化,季節性和周期性分別決定在一個特定的時間點上短期和長期的峰值。

?

    ?

?參考文章:A Review of Auto-scaling Techniques for Elastic Applications in Cloud Environments

轉載于:https://www.cnblogs.com/yuxiaoba/p/9274717.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277706.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277706.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277706.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity 3D學習筆記之一 界面介紹

因為學校的課程&#xff0c;本學期對Unity 3D有學習的要求&#xff0c;在博客中記錄下自己的Unity學習之路&#xff08;內容摘錄自書本和視頻&#xff0c;書本為Unity 4.x從入門到精通&#xff09;一、Unity界面介紹首先進入Unity3D&#xff0c;在菜單欄&#xff0c;File中new …

Python 獲得程序 exe 的版本號

Python 獲得程序 exe 的版本號 python中需要安裝 pywin32 包 # based on http://stackoverflow.com/questions/580924/python-windows-file-version-attribute from win32com.client import Dispatchdef get_version_via_com(filename):parser Dispatch("Scripting.FileS…

Coding and Paper Letter(一)

2019獨角獸企業重金招聘Python工程師標準>>> 最近發現需要在快速閱讀背景下&#xff0c;對快餐式資源做整理與收集。以Coding&#xff08;以Github&#xff09;和Paper&#xff08;自己看到的一些論文&#xff0c;論文一般主要看題目和摘要做些簡單小結&#xff09;…

MacBook刷機勘錯篇

前一段時間突然發現自己的MacBook已經好久沒有刷過系統了&#xff0c;10.9用著還好&#xff0c;但bootcamp裝的win8.1越來越卡&#xff0c;越用越慢。想要重做一下雙系統&#xff0c;后來就演變成了兩個系統一起更新&#xff0c;再后來就演變成了一個慘案。因為自己一直也沒有使…

字典、列表、元組

1 字典2 Python內置的字典數據類型&#xff1a;全稱dictionary&#xff0c;在其他語言中也稱為map&#xff0c;使用鍵-值&#xff08;key-value&#xff09;存儲&#xff0c;具有極快的查找速度3 4 當將key-value放進dict時&#xff0c;dict會根據key算出value要存放地址&#…

Sublime Text怎么快速建立一個html5頁面模板

在編輯器中輸入一個半角英文的感嘆號&#xff08;!&#xff09;,然后按下TAB鍵

Mac OS X 10.10更新及體驗

前一陣子&#xff0c;更新了Mac OS 10.10 Yosemite&#xff0c;總體用起來感覺還是很不錯的&#xff0c;是很值得升級&#xff0c;相對于10.9 Mavericks優化了不少東西。我之前寫的使用教程有一些也就不適用了&#xff1b;比如更換Dashboard中的背景&#xff0c;10.10中Dashboa…

快速冪學習筆記

啥是快速冪 快速冪&#xff0c;顧名思義&#xff0c;就是快速算某個數的多少次冪。其時間復雜度為 \(O(\log N)\)&#xff0c; 與樸素的\(O(N)\)相比效率有了極大的提高。 原理 來自學長&#xff1a; 我們可以把 \(b\) 分解成二進制數&#xff0c;其中從小到大每一個二進制位 是…

文本處理工具sed

sed&#xff1a;stream Editor流編輯器&#xff0c;默認不編輯原文件&#xff0c;僅對模式空間中的數據做處理&#xff1b;而后&#xff0c;處理結束后&#xff0c;將模式空間打印至屏幕。語法&#xff1a; sed [option] AddressCommand file1 file2... option選項有&#xff1…

Mac OS X必備APP推薦之一

本篇博文要推薦一下裝機必備的APP&#xff0c;因為電腦的使用需求因人而異&#xff0c;這里我根據我的見解和長時間的使用經驗推薦一些我認為大家基本都用得到的APP&#xff0c;太過專業性質的我就不推薦了&#xff0c;當然我的推薦肯定會有疏漏和偏差的地方&#xff0c;還請熟…

2018-2019-2 20175235 實驗四《Android開發基礎》實驗報告

實驗目的 一、Android Studio的安裝測試 二、Activity測試 三、UI測試 四、布局測試 五、事件處理測試 一.Android Stuidio的安裝測試&#xff1a; 參考《Java和Android開發學習指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章&#xff1a; 參考http://www.cnblogs.com…

Mac OS X必備APP推薦之二

本篇接著上一篇APP推薦的博文&#xff0c;繼續為大家推薦Mac下好用的APP。 一、首先推薦一款DaisyDisk&#xff0c;磁盤分析、清理工具。前面第一篇APP推薦中&#xff0c;我們推薦過APP和系統垃圾清理工具——Cleanmymac&#xff0c;這兩個APP側重有所不同。Cleanmymac主要清理…

【編程大系】Java資源匯總

1.學習資料&#xff1a; 1&#xff09;Spring Boot 那些事&#xff1a;https://www.w3cschool.cn/springboot/ 對應的 gitHub代碼&#xff1a; https://github.com/JeffLi1993/springboot-learning-example 2&#xff09;Spring Boot基礎視頻&#xff1a;https://www.w3cschool…

Mac OSX使用VMware Fusion安裝windows虛擬機教程

安裝虛擬機之前&#xff0c;先要有兩步準備工作。第一&#xff0c;安裝并激活VMware Fusion&#xff0c;如果大家還沒有下載VMware Fusion請參照上一篇博文&#xff0c;APP推薦之二&#xff0c;下載VMware Fusion并激活。第二&#xff0c;下載你想要安裝的系統鏡像。因為已經裝…

利用CAGradientLayer自定義顏色漸變view

說個故事&#xff1a; UI設計對大家說:“我們拒絕炒現飯!"。 然后就加了一波特效。 程序員猝。 #####效果分析&#xff1a; 1.水波動畫。 2.背景顏色漸變。 #####實現思路&#xff1a; 1.水波動畫&#xff0c;用CGMutablePathRef和三角函數畫出波浪線&#xff0c;讓后利用…

【筆記】spring定時器時間配置實例

"0/10 * * * * ?" 每10秒觸發 "0 0 12 * * ?" 每天中午12點觸發 "0 15 10 ? * *" 每天上午10:15觸發 "0 15 10 * * ?" 每天上午10:15觸發 "0 15 10 * * ? *" 每天上午10:15觸發 "0 15 10 * * ? 2005" 2…

java簡介和開發環境搭建

因為本人的Java一直以來水平都不怎么樣&#xff0c;大一的時候只考了60分。所以在臨近畢業的時候&#xff0c;我選擇了重修Java&#xff0c;這些天正在慢慢的回顧Java&#xff0c;會到博客里面記錄一些Java的知識&#xff0c;不為有多少人來看&#xff0c;只希望自己有所收獲。…

第六章 函數和宏定義實驗(2)

C程序設計實驗報告 實驗項目&#xff1a; 1、利用復化梯形公式計算定積分 2、計算Ackerman函數 3、編寫計算x的y次冪的遞歸函數getpower(int x,int y)&#xff0c;并在主程序中實現輸入輸出 4、編寫計算學生年齡的遞歸函數 5、編寫遞歸函數實現Ackman函數 姓名&#xff1a;王錦…

將控件保存為圖片

原文:將控件保存為圖片將控件保存為圖片 周銀輝 這里分別提供win form 和 wpf 兩種方式 對于.net 2.0 我們可以簡單地利用 BitBlt 函數來實現&#xff0c;非常簡單&#xff0c;代碼如下&#xff1a; publicstaticclassControlToImageConverter { privateconstInt32 S…

Linux基礎命令---get獲取ftp文件

get 使用lftp登錄ftp服務器之后&#xff0c;可以使用get指令從服務器獲取文件。 1、語法 get [-E] [-a] [-c] [-O base] rfile [-o lfile] 2、選項列表 選項 說明 -o 指定輸出文件的名字&#xff0c;不指定則使用原來的名字 -c 如果失敗&#xff0c;持續獲取 -E 獲取…