周迪卿
(杭州師范大學(xué)國(guó)際服務(wù)工程學(xué)院 瑞薩061班,浙江 杭州 310012)
對(duì)于構(gòu)建的虛擬機(jī)將共享能力服務(wù)器底層的硬件資源,我們對(duì)虛擬機(jī)以及計(jì)算資源提供了統(tǒng)一的管理策略。正常工作狀態(tài)下,虛擬機(jī)本身運(yùn)行特定的應(yīng)用為用戶提供計(jì)算服務(wù),由于應(yīng)用的本身差異以及虛擬機(jī)工作狀態(tài)的不同造成對(duì)計(jì)算資源表現(xiàn)出不同的需求特征,比如在某些時(shí)間段內(nèi),某些虛擬機(jī)上應(yīng)用可能對(duì)CPU或memory等計(jì)算資源表現(xiàn)敏感,作業(yè)的運(yùn)行較多的消耗CPU時(shí)間片或memory,如果虛擬機(jī)當(dāng)前的資源剛好有限,那么虛擬機(jī)本身的負(fù)載可能就比較高;而此時(shí),另外某些虛擬機(jī)可能出于非活動(dòng)態(tài)(比如睡眠狀態(tài))或虛擬機(jī)內(nèi)部沒有運(yùn)行任何作業(yè),機(jī)器本身的負(fù)載就比較低。在這樣一種場(chǎng)景下,如果能夠根據(jù)當(dāng)前虛擬機(jī)對(duì)資源的需求,重新調(diào)整虛擬機(jī)之間的資源分配狀況(比例),將有效地緩解當(dāng)前高負(fù)載虛擬機(jī)的資源壓力,同時(shí)也能進(jìn)一步提升能力服務(wù)器整體的資源利用率,為此,我們研究了負(fù)載均衡的相關(guān)策略,并基于能力服務(wù)器資源管理的特點(diǎn)引入了能力流動(dòng)機(jī)制。簡(jiǎn)單的說,能力流動(dòng)就是物理資源在不同虛擬平臺(tái)之間以及同一虛擬平臺(tái)的不同虛擬節(jié)點(diǎn)之間按需、動(dòng)態(tài)和透明的“流動(dòng)”,以保證整個(gè)系統(tǒng)始終具有較高的資源利用率、應(yīng)用運(yùn)行效率和負(fù)載均衡性。
當(dāng)前信息系統(tǒng)的各個(gè)核心部分隨著業(yè)務(wù)量的不斷提高、訪問量和數(shù)據(jù)流量的快速增長(zhǎng),其處理能力和計(jì)算強(qiáng)度也相應(yīng)增大,使得單一設(shè)備根本無法承擔(dān),在此情況下,如果扔掉現(xiàn)有設(shè)備去做大量的硬件升級(jí),這樣將造成現(xiàn)有資源的極大浪費(fèi),而且如果再面臨下一次業(yè)務(wù)量的提升時(shí),這又將導(dǎo)致硬件升級(jí)的高額成本投入,甚至性能再卓越的設(shè)備也不能滿足當(dāng)前業(yè)務(wù)量的增長(zhǎng),針對(duì)此情況而衍生出來的一種廉價(jià)、有效、透明的方法,以加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性的技術(shù)就是負(fù)載均衡技術(shù)。負(fù)載均衡是一種策略,它能讓多臺(tái)服務(wù)器或多條鏈路共同承擔(dān)一些繁重的計(jì)算或I/O任務(wù),從而以較低成本消除網(wǎng)絡(luò)瓶頸,提高網(wǎng)絡(luò)的靈活性和可靠性。負(fù)載均衡有兩個(gè)方面的含義:首先,把大量的并發(fā)訪問或數(shù)據(jù)流量分擔(dān)到多臺(tái)節(jié)點(diǎn)設(shè)備上分別處理,減少用戶等待響應(yīng)的時(shí)間;其次,單個(gè)重負(fù)載的運(yùn)算分擔(dān)到多臺(tái)節(jié)點(diǎn)設(shè)備上做并行處理,每個(gè)節(jié)點(diǎn)設(shè)備處理結(jié)束后,將結(jié)果匯總,再返回給用戶,使得信息系統(tǒng)處理能力可以得到大幅度提高。從系統(tǒng)的角度來看,負(fù)載均衡技術(shù)根據(jù)其最終實(shí)現(xiàn)的層次可以分為以下兩種:
這種負(fù)載均衡方法是在應(yīng)用層實(shí)現(xiàn),通過可以將一個(gè)高負(fù)載的大作業(yè)進(jìn)行拆分為若干個(gè)小任務(wù),將這些不同的小任務(wù)通過一定的調(diào)度策略分發(fā)到不同的機(jī)器上分別執(zhí)行,當(dāng)作業(yè)執(zhí)行完成后將結(jié)果匯總返回給用戶。類似的應(yīng)用場(chǎng)景比如傳統(tǒng)的網(wǎng)絡(luò)游戲中整個(gè)游戲只有一個(gè)服務(wù)器來支持一張異常龐大的地圖,這種超級(jí)制作運(yùn)轉(zhuǎn)起來難度自然相當(dāng)大。為了使服務(wù)器運(yùn)轉(zhuǎn)暢通無阻,以保證服務(wù)器后臺(tái)的高可用性,實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡和動(dòng)態(tài)可擴(kuò)展性,令地圖可連續(xù)跨接在多個(gè)服務(wù)器上。當(dāng)玩家發(fā)生跨服動(dòng)作時(shí)達(dá)到一種無縫的平滑的效果,玩家甚至感覺不到己切換地圖或服務(wù)器,在這里就是通過將一個(gè)大作業(yè)進(jìn)行劃分后部署到后臺(tái)的集群服務(wù)器中,實(shí)現(xiàn)負(fù)載均衡同時(shí)也提高了為用戶服務(wù)的效率和質(zhì)量。
這種是通過調(diào)整或升級(jí)底層硬件資源達(dá)到負(fù)載均衡,相關(guān)的硬件資源包含了CPUmemory.disk等。具體的硬件升級(jí)或調(diào)整方法可以是添加新硬件實(shí)現(xiàn)資源的擴(kuò)充,也可以是拋棄現(xiàn)有的設(shè)備更換全新的硬件資源。對(duì)于前者只需要在原有設(shè)備的基礎(chǔ)上增加新的硬件資源即可,比如通過購買新的內(nèi)存增加總的內(nèi)存容量;然而隨著當(dāng)前硬件設(shè)備的迅速發(fā)展,可能某些硬件設(shè)備出現(xiàn)新舊兼容問題,就可能需要扔掉現(xiàn)有設(shè)備去做大量的硬件升級(jí),這樣將造成現(xiàn)有資源的極大浪費(fèi),而且如果再面臨下一次業(yè)務(wù)量的提升時(shí),這又將導(dǎo)致硬件升級(jí)的高額成本投入。就能力服務(wù)器而言,由于應(yīng)用場(chǎng)景的差異通過將作業(yè)拆分成更小的粒度達(dá)到負(fù)載均衡顯得不太合適。相反,由于引入了虛擬化,實(shí)現(xiàn)對(duì)底層物理服務(wù)器資源的全局映射,支持虛擬平臺(tái)對(duì)全局虛擬化后的物理資源的訪問和共享,我們可以試圖采用新的硬件升級(jí)模式來做到負(fù)載均衡,這就是我們下面將要介紹的能力流動(dòng)機(jī)制,能力流動(dòng)即所謂的計(jì)算資源流動(dòng),就是指當(dāng)某臺(tái)虛擬機(jī)的計(jì)算資源利用達(dá)到飽和,其他虛擬機(jī)卻仍然有空閑計(jì)算資源時(shí),我們能夠通過某種調(diào)度策略將空閑虛擬機(jī)的一部分計(jì)算資源動(dòng)態(tài)分配給資源飽和的虛擬機(jī),平衡當(dāng)前虛擬機(jī)之間的負(fù)載。
從第一臺(tái)電子計(jì)算機(jī)ANIARC的誕生至今,計(jì)算機(jī)的構(gòu)建模式就一直遵循馮·諾依曼體系結(jié)構(gòu)即計(jì)算機(jī)的組成包含運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備五大部分。在個(gè)人PC或企業(yè)服務(wù)器中CPU等部件與操作系統(tǒng)實(shí)現(xiàn)靜態(tài)綁定,當(dāng)應(yīng)用對(duì)硬件資源的需求增加時(shí),如果當(dāng)前機(jī)器無法滿足應(yīng)用需求,此時(shí)用戶要想提高機(jī)器的運(yùn)算能力需要通過硬件升級(jí)實(shí)現(xiàn),對(duì)于這問題企業(yè)服務(wù)器表現(xiàn)的尤為明顯。同時(shí),企業(yè)內(nèi)部普遍資源分布的不均衡,某些服務(wù)器資源利用率很高,而另外一些則較低,由于機(jī)器本身的獨(dú)立性和對(duì)資源的獨(dú)占性導(dǎo)致了資源極大浪費(fèi)。然而能力服務(wù)器打破了傳統(tǒng)機(jī)器設(shè)備獨(dú)立性,實(shí)現(xiàn)底層資源整合以及底層物理服務(wù)器資源的全局映射,支持虛擬平臺(tái)對(duì)全局虛擬化后的物理資源的訪問和共享,能夠根據(jù)用戶的需求實(shí)時(shí)調(diào)整虛擬機(jī)資源的分配,實(shí)現(xiàn)計(jì)算資源的動(dòng)態(tài)流動(dòng)。
能力計(jì)算思想是能力服務(wù)器實(shí)現(xiàn)的核心基礎(chǔ),我們將CPU提供的運(yùn)算能力,內(nèi)存和硬盤提供的存儲(chǔ)能力統(tǒng)稱為能力資源,配合能力服務(wù)器虛擬資源管理相關(guān)策略實(shí)現(xiàn)了虛擬機(jī)之間的能力流動(dòng)即計(jì)算資源的流動(dòng)。能力流動(dòng)實(shí)現(xiàn)了計(jì)算資源(CPU,memory)在不同虛擬平臺(tái)之間以及同一虛擬平臺(tái)的不同虛擬節(jié)點(diǎn)之間按需、動(dòng)態(tài)和透明的“流動(dòng)”,以保證整個(gè)系統(tǒng)始終具有較高的資源利用率、應(yīng)用運(yùn)行效率和負(fù)載均衡性。
為實(shí)現(xiàn)資源全局映射,能力服務(wù)器的資源管理系統(tǒng)呱對(duì)全局資源可見,它可以根據(jù)當(dāng)前服務(wù)節(jié)點(diǎn)資源使用情況為某一虛擬機(jī)分配所需資源。Decision module模塊是整個(gè)資源流動(dòng)的核心。它需要為資源在虛擬機(jī)之間按需、動(dòng)態(tài)和透明的“流動(dòng)”進(jìn)行關(guān)鍵的決策,解決上述三個(gè)“流動(dòng)”決策問題,接下來分析解決上述決策問題的基本思路和策略:
3.2.1 “流動(dòng)”遵循總原則
能力服務(wù)器中的虛擬機(jī)在創(chuàng)建初期均設(shè)置了相應(yīng)的優(yōu)先級(jí)參數(shù),優(yōu)先級(jí)可由用戶指定,亦可采用系統(tǒng)的默認(rèn)級(jí)別。優(yōu)先級(jí)總分為以下五個(gè)級(jí)別:a.最高;b.高于標(biāo)準(zhǔn);c.標(biāo)準(zhǔn);d.低于標(biāo)準(zhǔn);e.最低,默認(rèn)優(yōu)先級(jí)是“標(biāo)準(zhǔn)”,同時(shí)規(guī)定:能力流動(dòng)只能是由優(yōu)先級(jí)低虛擬機(jī)流向優(yōu)先級(jí)高的虛擬機(jī),一旦作業(yè)運(yùn)行結(jié)束能力需要回流歸位。
3.2.2 “流動(dòng)”時(shí)機(jī)的選擇
資源流動(dòng)采用laze flowing的機(jī)制,基本思想是:當(dāng)收到某VM要減少其某種資源的請(qǐng)求時(shí),并不真正減少其對(duì)該資源的使用,而僅僅進(jìn)行簡(jiǎn)單的記錄;只有當(dāng)收到某VM要增加該類資源的請(qǐng)求時(shí),才真正實(shí)現(xiàn)資源在這兩者間的“流動(dòng)”。資源“流動(dòng)”后,該資源的前擁有者不能夠再使用該資源,除非它將該資源再次借入。
當(dāng)收到某VM要增加其某種資源的請(qǐng)求時(shí),Decision module會(huì)首先檢查其記錄的信息,看是否有空閑的該類資源,如果有則進(jìn)行相應(yīng)的資源“流動(dòng)”:如果沒有,Decision module模塊會(huì)根據(jù)VM的動(dòng)態(tài)優(yōu)先級(jí)進(jìn)行決策:若請(qǐng)求增加資源的VM的優(yōu)先級(jí)不是最低的,將控制資源從最低優(yōu)先級(jí)的VM流向請(qǐng)求資源的VM;若請(qǐng)求增加資源的VM的優(yōu)先級(jí)是最低的,則拒絕其增加資源的請(qǐng)求。(為防止某一虛擬機(jī)因?yàn)閮?yōu)先級(jí)低而造成對(duì)資源的請(qǐng)求永遠(yuǎn)被拒絕,故此優(yōu)先級(jí)采用動(dòng)態(tài)的變化,即隨時(shí)間增加,它的優(yōu)先級(jí)也會(huì)變大。簡(jiǎn)單的說,只有當(dāng)有VM請(qǐng)求增加資源時(shí),才有可能會(huì)激發(fā)真正的資源“流動(dòng)”;但并不是所有的增加資源的請(qǐng)求都會(huì)引發(fā)資源“流動(dòng)”,這要看整個(gè)系統(tǒng)當(dāng)前的狀況和發(fā)起請(qǐng)求的VM當(dāng)前的優(yōu)先級(jí)。
3.2.3 “流動(dòng)”對(duì)象及其量的確定
對(duì)于哪類資源要“流動(dòng)”,“流動(dòng)”多少的問題,主要取決于收到的請(qǐng)求,VM要改變其所擁有資源時(shí),須明確指出要改變哪類資源,改變多少。但真正改變的量還是會(huì)根據(jù)系統(tǒng)當(dāng)前的狀況和提出請(qǐng)求的VM的當(dāng)前優(yōu)先級(jí)由Decision module模塊決定。若系統(tǒng)能夠滿足該VM的請(qǐng)求,將會(huì)滿足它:若不能,則會(huì)滿足部分或拒絕。
能力流動(dòng)機(jī)制的引入,可以有效地解決了同一物理服務(wù)器內(nèi)部不同虛擬機(jī)之間的資源負(fù)載的均衡,實(shí)現(xiàn)了不同虛擬機(jī)之間資源的共享,提高了物理服務(wù)器的資源利用率。
[1]孫毓忠,常亮,未來企業(yè)信息化的基石-能力服務(wù)體系基礎(chǔ),信息技術(shù),2006.
[2]李國(guó)杰,關(guān)于超級(jí)計(jì)算與能力服務(wù)的戰(zhàn)略思考,信息技術(shù)快報(bào),2005.
[3]李國(guó)杰,關(guān)于下一代網(wǎng)絡(luò)體系結(jié)構(gòu)與應(yīng)用模式的思考,2002.