楊 娜,劉 靖
(內(nèi)蒙古大學(xué) 計(jì)算機(jī)學(xué)院,內(nèi)蒙古 呼和浩特 010021)
云應(yīng)用系統(tǒng)由運(yùn)行在多個(gè)云端節(jié)點(diǎn)上的服務(wù)組件協(xié)同構(gòu)成,考慮到云環(huán)境中失效已經(jīng)成為一種常態(tài),故為云應(yīng)用系統(tǒng)提供高效且持續(xù)可用的容錯(cuò)服務(wù),以保障其可靠運(yùn)行是至關(guān)重要的[1].軟硬件容錯(cuò)技術(shù)[2,3]已得到廣泛應(yīng)用,但在云環(huán)境中提供容錯(cuò)服務(wù)仍存在一個(gè)問題,即若單獨(dú)由云基礎(chǔ)架構(gòu)服務(wù)提供商為上層運(yùn)行的各個(gè)云應(yīng)用系統(tǒng)提供可用的容錯(cuò)機(jī)制,很難顧全不同云應(yīng)用系統(tǒng)的容錯(cuò)需求差異;而單獨(dú)將容錯(cuò)機(jī)制集成到云應(yīng)用系統(tǒng)開發(fā)中,又很難充分利用底層的云基礎(chǔ)架構(gòu)資源和效能.目前,由第三方容錯(cuò)服務(wù)提供商以容錯(cuò)即服務(wù)的模式為云應(yīng)用系統(tǒng)運(yùn)行提供持續(xù)可用的容錯(cuò)服務(wù),已成為首選的容錯(cuò)服務(wù)實(shí)用模式[4].
容錯(cuò)即服務(wù)的相關(guān)研究大都以較固定的容錯(cuò)技術(shù)方案為基礎(chǔ),未全面、適時(shí)地考慮云應(yīng)用系統(tǒng)在運(yùn)行時(shí)的容錯(cuò)需求變化,容錯(cuò)開銷較大且支撐容錯(cuò)服務(wù)的云資源利用率較低.具體而言,首先,容錯(cuò)解決的主要問題是提高被容錯(cuò)應(yīng)用系統(tǒng)的可靠性,但固定容錯(cuò)技術(shù)后,容錯(cuò)需求并未直接反映云應(yīng)用系統(tǒng)最關(guān)心的可靠性,也很難適應(yīng)云應(yīng)用系統(tǒng)在運(yùn)行時(shí)的容錯(cuò)需求變化.此外,如果云應(yīng)用系統(tǒng)使用固定的容錯(cuò)技術(shù),那么支撐該容錯(cuò)服務(wù)的云資源無論容錯(cuò)需求是否變化都將是固定的,易導(dǎo)致容錯(cuò)開銷大.同時(shí),云容錯(cuò)服務(wù)提供商只能為固定數(shù)量的云應(yīng)用系統(tǒng)提供容錯(cuò)服務(wù),其容錯(cuò)服務(wù)資源得不到合理且充分的利用,對(duì)云容錯(cuò)服務(wù)提供商的收益影響較大.
本文采用容錯(cuò)即服務(wù)的模式,提出了一種優(yōu)化的云容錯(cuò)服務(wù)動(dòng)態(tài)提供方法,從云應(yīng)用組件的可靠性、響應(yīng)時(shí)間等方面描述云應(yīng)用容錯(cuò)需求,以常用的復(fù)制、檢查點(diǎn)和NVP(N-version programming)等容錯(cuò)技術(shù)為基礎(chǔ),充分考慮容錯(cuò)服務(wù)動(dòng)態(tài)切換開銷,分別針對(duì)支撐容錯(cuò)服務(wù)的底層云資源是否足夠的場(chǎng)景,給出可用容錯(cuò)即服務(wù)提供方案的最優(yōu)化求解方法.實(shí)驗(yàn)結(jié)果表明,本文所提方法降低了云應(yīng)用系統(tǒng)支付的容錯(cuò)服務(wù)費(fèi)用及支撐容錯(cuò)服務(wù)的底層云資源的開銷,提高了容錯(cuò)服務(wù)提供商為多個(gè)云應(yīng)用實(shí)施高效可靠容錯(cuò)即服務(wù)的能力.
本文第1節(jié)概述相關(guān)工作.第2節(jié)給出云應(yīng)用系統(tǒng)容錯(cuò)需求的具體描述.第3節(jié)闡述3種容錯(cuò)技術(shù)的資源開銷約束分析,對(duì)其資源需求、執(zhí)行開銷和響應(yīng)時(shí)間進(jìn)行計(jì)算.第4節(jié)給出容錯(cuò)服務(wù)間的動(dòng)態(tài)切換開銷.第5節(jié)分別針對(duì)支撐容錯(cuò)服務(wù)的底層云資源是否足夠的場(chǎng)景,給出可用容錯(cuò)即服務(wù)提供方案的最優(yōu)化求解方法.第 6節(jié)應(yīng)用具體實(shí)例進(jìn)行實(shí)驗(yàn)驗(yàn)證本文所提方法的可用性及優(yōu)勢(shì).第7節(jié)總結(jié)全文.
在針對(duì)云環(huán)境中容錯(cuò)技術(shù)的典型研究中,文獻(xiàn)[5]對(duì)容錯(cuò)架構(gòu)進(jìn)行了綜述.文獻(xiàn)[6]提出了動(dòng)態(tài)可適配的復(fù)制容錯(cuò)和檢查點(diǎn)容錯(cuò)方法,并進(jìn)行了分析、建模和評(píng)估.文獻(xiàn)[7]針對(duì)當(dāng)前計(jì)算機(jī)系統(tǒng)計(jì)算和存儲(chǔ)資源豐富而并行文件系統(tǒng)寫帶寬提高相對(duì)滯后的特點(diǎn),提出了基于內(nèi)存緩存的異步檢查點(diǎn)容錯(cuò)技術(shù).文獻(xiàn)[8]針對(duì)云計(jì)算系統(tǒng)的軟故障恢復(fù),提出了能源感知的容錯(cuò)調(diào)度框架.文獻(xiàn)[9]為分布式組件系統(tǒng)提出了一種容錯(cuò)框架.
在針對(duì)容錯(cuò)即服務(wù)的相關(guān)研究中,文獻(xiàn)[4]提出將容錯(cuò)作為服務(wù)層的框架設(shè)計(jì),但并沒有提出具體的容錯(cuò)即服務(wù)方案.文獻(xiàn)[10]從容錯(cuò)服務(wù)提供商的角度,研究了選擇為哪些租戶提供容錯(cuò)服務(wù)才能使云容錯(cuò)服務(wù)提供商的收益最大的問題,但要求在容錯(cuò)需求中必須指定組件將要使用的具體容錯(cuò)技術(shù).文獻(xiàn)[11]提出了一種基于用戶約束的容錯(cuò)彈性系統(tǒng),該系統(tǒng)內(nèi)置的容錯(cuò)控制器將根據(jù)用戶約束為用戶適配容錯(cuò)方法,但并未考慮底層云資源的利用率.文獻(xiàn)[12]基于系統(tǒng)運(yùn)行時(shí)的資源和負(fù)載情況,為用戶動(dòng)態(tài)地適配復(fù)制容錯(cuò)技術(shù)或者檢查點(diǎn)容錯(cuò)技術(shù),但沒有考慮被容錯(cuò)對(duì)象對(duì)時(shí)間及容錯(cuò)效果的要求.
通過以上分析可知,針對(duì)現(xiàn)有相關(guān)研究的不足,本文以容錯(cuò)即服務(wù)模式為切入點(diǎn),切實(shí)考慮可靠性等云應(yīng)用容錯(cuò)需求,提出一種優(yōu)化的云容錯(cuò)服務(wù)動(dòng)態(tài)提供方法.
云應(yīng)用系統(tǒng)中不同云服務(wù)組件(具有一定功能的獨(dú)立程序體)的重要程度不同,重要性越高的組件對(duì)容錯(cuò)的需求更高.服務(wù)組件在不同時(shí)間段的重要程度也可能不同,例如,若某個(gè)服務(wù)組件在某個(gè)時(shí)間段被調(diào)用的次數(shù)較多,則該組件在該時(shí)間段的重要性和容錯(cuò)需求就較高.可靠性是云應(yīng)用系統(tǒng)容錯(cuò)需求的核心問題,并且,由于非重要性組件對(duì)可靠性要求不是很嚴(yán)格,那么通過定義可靠性誤差,即允許可靠性稍有降低,會(huì)使云應(yīng)用系統(tǒng)需支付的容錯(cuò)費(fèi)用降低.此外,不同服務(wù)組件對(duì)響應(yīng)時(shí)間和數(shù)值容錯(cuò)的要求不同,例如,多媒體組件對(duì)響應(yīng)時(shí)間的要求比較嚴(yán)格,但對(duì)數(shù)據(jù)正確性要求并不嚴(yán)格.通過以上分析,我們將云應(yīng)用系統(tǒng)的容錯(cuò)需求描述為下面的七元組定義.
其中,AID標(biāo)識(shí)具體云應(yīng)用系統(tǒng),CID標(biāo)識(shí)該云應(yīng)用系統(tǒng)中的具體服務(wù)組件,且AID∈N+,CID∈N+.periodT描述服務(wù)組件向云容錯(cuò)服務(wù)提供商請(qǐng)求容錯(cuò)服務(wù)的時(shí)間段.CriticAID_CID(periodT)表示服務(wù)組件AID_CID在時(shí)間段periodT內(nèi)是否為關(guān)鍵組件(重要性較高),CriticAID_CID(periodT)∈{0,1},關(guān)鍵性組件取值為 1,否則,取值為 0.UReliaAID_CID(periodT)描述服務(wù)組件在給定時(shí)間段內(nèi)的容錯(cuò)可靠性需求,且應(yīng)滿足 0<UReliaAID_CID(periodT)<1.DReliaAID_CID(periodT)描述服務(wù)組件在給定時(shí)間段內(nèi)允許的容錯(cuò)可靠性誤差,滿足0≤DReliaAID_CID(periodT)<1.RTAID_CID(periodT)描述服務(wù)組件在給定時(shí)間段內(nèi)對(duì)響應(yīng)時(shí)間的要求.vFaultAID_CID(periodT)描述服務(wù)組件在給定時(shí)間段內(nèi)對(duì)數(shù)值容錯(cuò)效果的要求,即當(dāng)組件要求保證數(shù)據(jù)準(zhǔn)確時(shí)取值為1,否則,取值為0.
給出一個(gè)云應(yīng)用系統(tǒng)的容錯(cuò)需求示例性描述為〈1-3,0-1,1,0.991,0.003,3.5,1〉,該容錯(cuò)需求可解釋為:1號(hào)云應(yīng)用系統(tǒng)中的 3號(hào)服務(wù)組件是完成關(guān)鍵任務(wù)的組件,期望容錯(cuò)可靠性達(dá)到 0.991,允許存在可靠性誤差不超過0.3%,要求組件處理請(qǐng)求的響應(yīng)時(shí)間不超過3.5s,要求對(duì)組件的容錯(cuò)服務(wù)能夠處理數(shù)值錯(cuò)誤故障.
選擇當(dāng)前普遍使用的復(fù)制容錯(cuò)技術(shù)、NVP容錯(cuò)技術(shù)與檢查點(diǎn)容錯(cuò)技術(shù)支撐云容錯(cuò)服務(wù)提供商提供容錯(cuò)即服務(wù),為此,本文重點(diǎn)考慮容錯(cuò)技術(shù)在虛擬機(jī)、存儲(chǔ)資源和軟件運(yùn)行方面的執(zhí)行開銷.在計(jì)算復(fù)制和NVP容錯(cuò)技術(shù)的開銷時(shí),將特定時(shí)間段內(nèi)使用虛擬機(jī)運(yùn)行組件代碼產(chǎn)生的費(fèi)用作為虛擬機(jī)開銷;將使用存儲(chǔ)資源存儲(chǔ)組件代碼產(chǎn)生的費(fèi)用作為存儲(chǔ)資源開銷.根據(jù)文獻(xiàn)[10],檢查點(diǎn)容錯(cuò)技術(shù)除了使用虛擬機(jī)和存儲(chǔ)資源運(yùn)行并存儲(chǔ)檢查點(diǎn)程序外,還有生成及應(yīng)用檢查點(diǎn)引起的軟件運(yùn)行開銷.此外,為各種開銷增加了權(quán)重因子,設(shè)置α為存儲(chǔ)開銷權(quán)重因子,β為虛擬機(jī)開銷權(quán)重因子,γ為軟件運(yùn)行開銷權(quán)重因子.下文將以組件i在時(shí)間段[0,T]內(nèi)的可靠性需求UReliai(T)為例,計(jì)算使用不同容錯(cuò)技術(shù)滿足可靠性需求時(shí)的資源需求、執(zhí)行開銷和響應(yīng)時(shí)間.
本文采用被動(dòng)復(fù)制容錯(cuò)技術(shù),即設(shè)置某一個(gè)副本為主副本,其他為備份副本.當(dāng)主副本失效時(shí),選擇某個(gè)備份副本作為新的主副本,接替舊主副本的工作.為了確保新的主副本能夠繼續(xù)接替舊主副本的工作,舊主副本在運(yùn)行期間周期性地保存狀態(tài)信息到備份副本.可為每個(gè)副本都分配一臺(tái)虛擬機(jī).假設(shè)一個(gè)副本的失效對(duì)其他副本沒有影響,那么,根據(jù)被動(dòng)復(fù)制容錯(cuò)技術(shù)的運(yùn)行機(jī)制可知,當(dāng)在時(shí)間段[0,T]內(nèi)使用復(fù)制容錯(cuò)技術(shù)滿足組件i的可靠性需求UReliai(T)時(shí),至少需要的副本個(gè)數(shù)numRep可由公式(1)求得.假設(shè)服務(wù)組件初始可靠性為R.
· 復(fù)制容錯(cuò)技術(shù)的資源需求
根據(jù)復(fù)制容錯(cuò)技術(shù)的運(yùn)行機(jī)制,資源需求量為numRep-1臺(tái)虛擬機(jī)和numRep-1個(gè)存儲(chǔ)單元.虛擬機(jī)用來運(yùn)行容錯(cuò)需要的numRep-1個(gè)副本程序,存儲(chǔ)單元用來存儲(chǔ)容錯(cuò)的numRep-1個(gè)副本程序.
· 復(fù)制容錯(cuò)技術(shù)的執(zhí)行開銷
根據(jù)文獻(xiàn)[13]中提出的云計(jì)算下數(shù)據(jù)管理成本模型,存儲(chǔ)開銷可用公式(2)表示.其中,假設(shè)程序運(yùn)行所需存儲(chǔ)單元大小為nm,數(shù)據(jù)中心大小為s,其調(diào)節(jié)系數(shù)為u.虛擬機(jī)開銷可用公式(3)表示,priceVmHour描述云容錯(cuò)服務(wù)提供商每臺(tái)虛擬機(jī)每小時(shí)的價(jià)格.進(jìn)而,使用復(fù)制容錯(cuò)技術(shù)產(chǎn)生的總開銷可用公式(4)表示.
· 復(fù)制容錯(cuò)技術(shù)的響應(yīng)時(shí)間
根據(jù)文獻(xiàn)[14],假設(shè)組件處于正常態(tài)和閑置態(tài)的請(qǐng)求到達(dá)率分別為λ和λ′,平均響應(yīng)時(shí)間分別為WO和WI,組件修復(fù)屬于延時(shí)修復(fù),副本的壽命服從均值為1/f的指數(shù)分布,每個(gè)任務(wù)的服務(wù)時(shí)間服從均值為1/μ的指數(shù)分布,修復(fù)一個(gè)故障的時(shí)間服從均值為1/δ的指數(shù)分布,組件可用性為avail,檢查點(diǎn)間隔為1/c(周期性保存狀態(tài)到備份副本),設(shè)置一個(gè)檢查點(diǎn)的時(shí)間為Tchk,有i個(gè)副本處于正常態(tài)的概率為Pi,組件處于正常態(tài)的概率為Pq.那么,在使用復(fù)制容錯(cuò)技術(shù)時(shí),請(qǐng)求的響應(yīng)時(shí)間Wrep可用公式(5)表示.
其中,
在 NVP容錯(cuò)技術(shù)中,N個(gè)版本的子程序同時(shí)執(zhí)行用戶請(qǐng)求(子程序運(yùn)行在不同的虛擬機(jī)上),并將執(zhí)行結(jié)果傳到表決器,其根據(jù)表決算法確定處理是否正確.本文選擇大數(shù)表決算法[15]及并行子程序執(zhí)行的投票流程[16],即當(dāng)新的子程序執(zhí)行完畢后,如果已經(jīng)完成執(zhí)行操作的子程序個(gè)數(shù)大于(numNVP/2)+1,則執(zhí)行投票算法.根據(jù)文獻(xiàn)[17],在時(shí)間段[0,T]內(nèi),當(dāng)滿足組件i可靠性需求UReliai(T)時(shí),至少需要的子程序個(gè)數(shù)numNVP可由公式(6)求得.
· NVP容錯(cuò)技術(shù)的資源需求
NVP容錯(cuò)技術(shù)的資源需求量為numNVP-1臺(tái)虛擬機(jī)和numNVP-1個(gè)存儲(chǔ)單元.虛擬機(jī)用來運(yùn)行容錯(cuò)所需的numNVP-1個(gè)子程序,存儲(chǔ)單元用來存儲(chǔ)容錯(cuò)所需的numNVP-1個(gè)子程序.
· NVP容錯(cuò)技術(shù)的執(zhí)行開銷
根據(jù)文獻(xiàn)[13],存儲(chǔ)開銷可用公式(7)表示.虛擬機(jī)開銷可用公式(8)表示.進(jìn)而,使用 NVP容錯(cuò)技術(shù)產(chǎn)生的總開銷可用公式(9)表示.
· NVP容錯(cuò)技術(shù)的響應(yīng)時(shí)間
使用執(zhí)行時(shí)間和投票時(shí)間的和作為可度量請(qǐng)求響應(yīng)時(shí)間.假設(shè)第i個(gè)子程序執(zhí)行一個(gè)服務(wù)需要的時(shí)間服從均值為 1/ui的指數(shù)分布,投票時(shí)間服從參數(shù)為λd的指數(shù)分布.那么,根據(jù)文獻(xiàn)[16],當(dāng)?shù)趈個(gè)((numNVP/2)+1≤j≤numNVP)子程序執(zhí)行完畢后,服務(wù)組件產(chǎn)生正確結(jié)果的概率pj及執(zhí)行時(shí)間tj可分別用公式(10)和公式(11)表示.進(jìn)而,服務(wù)組件的執(zhí)行時(shí)間timeExec可用公式(12)表示,請(qǐng)求的響應(yīng)時(shí)間WNVP可用公式(13)表示.
本文采用最基本的完全檢查點(diǎn)容錯(cuò)技術(shù),即周期性地保存云應(yīng)用系統(tǒng)的關(guān)鍵狀態(tài),當(dāng)系統(tǒng)發(fā)生故障時(shí),可恢復(fù)到最新的檢查點(diǎn)處并繼續(xù)運(yùn)行.
· 檢查點(diǎn)容錯(cuò)技術(shù)的資源需求
檢查點(diǎn)容錯(cuò)技術(shù)的資源需求量為 1臺(tái)虛擬機(jī)和 1個(gè)存儲(chǔ)單元.虛擬機(jī)用來運(yùn)行檢查點(diǎn)程序,該程序主要是周期性地完成檢查點(diǎn)工作,存儲(chǔ)單元用來存儲(chǔ)檢查點(diǎn)程序.
· 檢查點(diǎn)容錯(cuò)技術(shù)的執(zhí)行開銷
根據(jù)文獻(xiàn)[13],存儲(chǔ)開銷可用公式(14)表示.虛擬機(jī)開銷可用公式(15)表示.
計(jì)算檢查點(diǎn)容錯(cuò)技術(shù)的軟件運(yùn)行開銷時(shí),根據(jù)文獻(xiàn)[10],首先計(jì)算出在時(shí)間段[0,T]內(nèi)檢查點(diǎn)的個(gè)數(shù),之后用該時(shí)間段內(nèi)檢查點(diǎn)的個(gè)數(shù)與每設(shè)置一次檢查點(diǎn)所產(chǎn)生的開銷的乘積作為其軟件運(yùn)行開銷.假設(shè)設(shè)置檢查點(diǎn)需要的時(shí)間為Tchk,使用一次檢查點(diǎn)引起的開銷為costPerInnovation,根據(jù)文獻(xiàn)[6],滿足組件i在時(shí)間段[0,T]內(nèi)的可靠性需求為UReliai(T)時(shí)的檢查點(diǎn)間隔ΔT可用公式(16)表示.進(jìn)而,軟件運(yùn)行開銷可用公式(17)表示,檢查點(diǎn)容錯(cuò)技術(shù)的總開銷可用公式(18)表示.
· 檢查點(diǎn)容錯(cuò)技術(shù)的響應(yīng)時(shí)間
假設(shè)所有在檢查點(diǎn)和故障期間被執(zhí)行的事務(wù)在恢復(fù)期間都將被重新執(zhí)行,系統(tǒng)可用性為avail,系統(tǒng)執(zhí)行一個(gè)服務(wù)需要的時(shí)間服從均值為1/μ的指數(shù)分布,故障率為γ′,事務(wù)請(qǐng)求到達(dá)率為λ.那么,根據(jù)文獻(xiàn)[18],使用檢查點(diǎn)容錯(cuò)技術(shù)時(shí)的響應(yīng)時(shí)間Wcp可用公式(19)表示.
其中,avail=1/(1+μ×ΔT×γ′+Tchk/ΔT),γ′=1–UReliai(T).
為保證提供商的利益,在生成容錯(cuò)服務(wù)時(shí),需要把時(shí)間段間容錯(cuò)技術(shù)的切換開銷考慮在內(nèi).包括不同容錯(cuò)技術(shù)間的切換,以及都使用復(fù)制容錯(cuò)技術(shù)但是副本個(gè)數(shù)不同,或者都使用NVP容錯(cuò)技術(shù)但是子程序個(gè)數(shù)不同的情況.假設(shè)在時(shí)間段[0,T](簡(jiǎn)記為T)內(nèi)使用容錯(cuò)技術(shù)M1,在時(shí)間段[T,T+1](簡(jiǎn)記為T1)內(nèi)使用容錯(cuò)技術(shù)M2,那么,在T的末期不僅需要保證M1的正常運(yùn)行,還需完成M2所需資源的準(zhǔn)備,但此時(shí),M2所需資源未被使用.因此,用準(zhǔn)備期間M2所用資源的成本開銷作為從M1容錯(cuò)技術(shù)切換到M2容錯(cuò)技術(shù)的切換開銷.
用numRepT1表示T1內(nèi)使用復(fù)制容錯(cuò)滿足容錯(cuò)需求時(shí)所需的副本個(gè)數(shù),同理,numNVPT1表示所需的子程序個(gè)數(shù).ΔTvm表示準(zhǔn)備一臺(tái)虛擬機(jī)的時(shí)間,ΔTstor表示準(zhǔn)備一個(gè)存儲(chǔ)單元的時(shí)間.perSecdVm表示每臺(tái)虛擬機(jī)每時(shí)間單位的開銷,并用公式(20)表示,perSecdStor表示每個(gè)存儲(chǔ)單元每時(shí)間單位的開銷,并用公式(21)表示.
(1) 復(fù)制容錯(cuò)技術(shù)或NVP容錯(cuò)技術(shù)切換到檢查點(diǎn)容錯(cuò)技術(shù)的開銷
因?yàn)闄z查點(diǎn)容錯(cuò)技術(shù)需要一臺(tái)虛擬機(jī)和一個(gè)存儲(chǔ)單元的支持,所以,切換開銷CosttoCP可表示為
(2) 檢查點(diǎn)容錯(cuò)技術(shù)或NVP容錯(cuò)技術(shù)切換到復(fù)制容錯(cuò)技術(shù)的開銷
因?yàn)樵赥1內(nèi)需要numRepT1-1臺(tái)虛擬機(jī)和numRepT1-1個(gè)存儲(chǔ)單元,所以,切換開銷CosttoRep可表示為
(3) 檢查點(diǎn)容錯(cuò)技術(shù)或復(fù)制容錯(cuò)技術(shù)切換到NVP容錯(cuò)技術(shù)的開銷
因?yàn)樵赥1內(nèi)需要numNVPT1-1臺(tái)虛擬機(jī)和numNVPT1-1個(gè)存儲(chǔ)單元,所以,切換開銷CosttoNVP可表示為
(4) 不同副本個(gè)數(shù)的復(fù)制容錯(cuò)技術(shù)間的切換開銷
當(dāng)numRepT1>numRep時(shí),切換開銷CostReptoRep可表示為
否則,無切換開銷.
(5) 不同子程序個(gè)數(shù)的NVP容錯(cuò)技術(shù)間的切換開銷
當(dāng)numNVPT1>numNVP時(shí),切換開銷CostNVPtoNVP可表示為
否則,無切換開銷.
用下面的多元組表示云容錯(cuò)服務(wù)提供商為服務(wù)組件i在時(shí)間段[0,T]內(nèi)提供的容錯(cuò)即服務(wù).
其中,Repi(T)、NVPi(T)和CPi(T)分別表示在T內(nèi),是否為組件i應(yīng)用復(fù)制、NVP或檢查點(diǎn)容錯(cuò)技術(shù),應(yīng)用時(shí)值為1,否則,值為0.vFaultResulti(T)表示是否為組件i提供了數(shù)值容錯(cuò)服務(wù),提供時(shí)值為1,否則值為0.LReliai(T)表示組件i的可靠性需求是否在提供容錯(cuò)服務(wù)時(shí)被降低,被降低時(shí)值為1,否則,值為0.FReliai(T)表示為組件i應(yīng)用容錯(cuò)即服務(wù)時(shí)最終達(dá)到的可靠性值,即若LReliai(T)=1,那么FReliai(T)=UReliai(T)-DReliai(T).Parai(T)表示為組件i提供特定容錯(cuò)服務(wù)時(shí)相應(yīng)的容錯(cuò)數(shù)據(jù)參數(shù),如若應(yīng)用復(fù)制容錯(cuò)服務(wù),則給出使用的副本個(gè)數(shù);若應(yīng)用NVP容錯(cuò)服務(wù),則給出使用的子程序個(gè)數(shù);若應(yīng)用檢查點(diǎn)容錯(cuò)服務(wù),則給出設(shè)置的檢查點(diǎn)間隔.costReliai(T)表示在T內(nèi),當(dāng)組件i被服務(wù)的可靠性為FReliai(T)時(shí),組件支付給云容錯(cuò)服務(wù)提供商的費(fèi)用.當(dāng)組件可靠性沒有被降低時(shí),使用分配給組件i的容錯(cuò)服務(wù)帶來的總開銷(包括容錯(cuò)服務(wù)切換開銷),作為組件i支付給供應(yīng)商的費(fèi)用.另外,為了鼓勵(lì)更多的云應(yīng)用系統(tǒng)將不重要的組件設(shè)置為非關(guān)鍵性組件,以便當(dāng)容錯(cuò)服務(wù)提供商可利用的云資源不足時(shí),可通過降低組件可靠性需求,提供更多的容錯(cuò)服務(wù)以提高收益.當(dāng)組件可靠性被降低時(shí),使用分配給組件i的容錯(cuò)服務(wù)帶來的總開銷的一部分,作為組件應(yīng)該支付給容錯(cuò)服務(wù)提供商的費(fèi)用.本文用w表示組件可靠性被降低后,組件支付的費(fèi)用占總開銷的比重.下面以時(shí)間段T和T1為例,分別針對(duì)支撐容錯(cuò)服務(wù)的底層云資源是否足夠的場(chǎng)景,給出可用容錯(cuò)即服務(wù)提供方案的最優(yōu)化求解方法.
在支撐容錯(cuò)服務(wù)的底層云資源足夠時(shí),使云容錯(cuò)服務(wù)提供商總開銷最低的容錯(cuò)即服務(wù)提供方法就是最優(yōu)方案.首先給出本節(jié)分析所需的一些變量定義.
(1)repTcheckT1(i):若在T時(shí)間段為組件i提供復(fù)制容錯(cuò)服務(wù),且在T1時(shí)間段為組件提供檢查點(diǎn)容錯(cuò)服務(wù),則repTcheckT1(i)取值為1,否則,取值為0.提供其他容錯(cuò)服務(wù)時(shí)可同理相關(guān)定義.
(2)Costrep-cp(i):表示在T時(shí)間段為組件i提供復(fù)制容錯(cuò)服務(wù),且在T1時(shí)間段提供檢查點(diǎn)容錯(cuò)服務(wù)的成本開銷,計(jì)算方法為Costrep-cp(i)=CostsumRep(T)+CostsumCP(T1).提供其他容錯(cuò)服務(wù)時(shí)可同理計(jì)算這類開銷變量.
下文使用最優(yōu)化方法求解最優(yōu)的容錯(cuò)即服務(wù)提供方案.設(shè)置Repi(T)、NVPi(T)、CPi(T)的初值均為1,后續(xù)計(jì)算根據(jù)服務(wù)組件的容錯(cuò)需求得到最適合的一種容錯(cuò)服務(wù).設(shè)k=T或T1.因?yàn)樵迫蒎e(cuò)服務(wù)提供商的虛擬機(jī)和存儲(chǔ)資源足夠,故組件可靠性需求無需被降低,LReliai(T)和LReliai(T1)的值恒為 0,即求解最優(yōu)容錯(cuò)服務(wù)提供方案應(yīng)滿足條件式(22);因?yàn)閺?fù)制容錯(cuò)和檢查點(diǎn)容錯(cuò)不能滿足數(shù)值容錯(cuò)要求,故求解方案應(yīng)滿足條件式(23);因?yàn)閷?duì)于任何組件,如果能夠滿足該組件對(duì)響應(yīng)時(shí)間和數(shù)值容錯(cuò)效果的需求,就應(yīng)為其提供一種容錯(cuò)服務(wù),故求解方案應(yīng)滿足條件式(24);因?yàn)樗峁┑娜蒎e(cuò)技術(shù)需滿足組件對(duì)響應(yīng)時(shí)間的要求,故求解方案應(yīng)滿足條件式(25)~式(27).
通過上述分析,目標(biāo)函數(shù)定義為云容錯(cuò)服務(wù)提供商為所有組件在時(shí)間段[0,T]和時(shí)間段[T,T+1]內(nèi),提供容錯(cuò)服務(wù)的總開銷最小.該目標(biāo)函數(shù)可用公式(28)描述.
其中,p為請(qǐng)求服務(wù)的組件個(gè)數(shù),xn描述了時(shí)間段T和T1為組件i提供容錯(cuò)即服務(wù)時(shí),云容錯(cuò)服務(wù)提供商的總開銷,具體計(jì)算方法見表1.例如,x1描述了在T時(shí)間段為組件i提供復(fù)制容錯(cuò)服務(wù),且在T1時(shí)間段提供檢查點(diǎn)容錯(cuò)服務(wù)時(shí),總開銷包括復(fù)制容錯(cuò)技術(shù)和檢查點(diǎn)容錯(cuò)技術(shù)本身的資源開銷及容錯(cuò)服務(wù)切換開銷的總和.
Table 1 Total cost of cloud fault tolerance service provider表1 云容錯(cuò)服務(wù)提供商的總開銷
這樣,滿足約束條件式(22)~式(27)并使目標(biāo)函數(shù)最小的解,就是本場(chǎng)景下在時(shí)間段T和T1內(nèi),應(yīng)為云應(yīng)用系統(tǒng)中各服務(wù)組件提供的最優(yōu)化容錯(cuò)即服務(wù)方案.
當(dāng)云容錯(cuò)服務(wù)提供商用于支撐容錯(cuò)服務(wù)的底層云資源不足時(shí),某些非關(guān)鍵性組件的可靠性允許被降低,所需的云資源量會(huì)有所緩解.此外,云容錯(cuò)服務(wù)提供商可外租虛擬機(jī)及存儲(chǔ)資源,重新生成新的容錯(cuò)服務(wù)方案,滿足更多組件的容錯(cuò)需求.基于對(duì)資源利用靈活性的分析,本文假設(shè)云容錯(cuò)服務(wù)供應(yīng)商在為所有可提供容錯(cuò)服務(wù)的組件提供容錯(cuò)服務(wù)之前,外包資源引起的成本低于云容錯(cuò)服務(wù)供應(yīng)商因?yàn)橥獍黾拥馁Y源使得能提供更好的容錯(cuò)服務(wù)而多得的收益.因此,在這種場(chǎng)景下,本文給出的容錯(cuò)即服務(wù)提供方法應(yīng)能保證容錯(cuò)服務(wù)提供商在為所有可提供容錯(cuò)服務(wù)的組件實(shí)施容錯(cuò)服務(wù)的條件下,其開銷與因?yàn)榻档徒M件可靠性而少收取的費(fèi)用之和最低.首先給出本節(jié)分析所需的一些變量定義.
(1)yi(T):表示組件i在T內(nèi)是否被提供容錯(cuò)服務(wù).即若Repi(k)+NVPi(k)+CPi(k)=0,則yi(T)=0,否則,yi(T)=1.
(2)numRep′表示組件可靠性被降低并應(yīng)用復(fù)制容錯(cuò)技術(shù)時(shí)需要的副本的個(gè)數(shù).numNVP′表示組件可靠性被降低并應(yīng)用NVP容錯(cuò)技術(shù)時(shí)需要的子程序個(gè)數(shù).
(4)preVmi(T)和postVmi(T)分別表示組件i在時(shí)間段T內(nèi)的可靠性沒有被降低和降低后容錯(cuò)所需的虛擬機(jī)數(shù)量.其中,
(5)preStori(T)和postStori(T)分別表示組件i在時(shí)間段T內(nèi)的可靠性沒有被降低和降低后容錯(cuò)所需的存儲(chǔ)單元數(shù)量.通過計(jì)算數(shù)值可知,preStori(T)=preVmi(T);postStori(T)=postVmi(T).
(6)sumLoseFee(T)表示在時(shí)間段T內(nèi),因?yàn)榻档徒M件i的可靠性而使容錯(cuò)服務(wù)提供商少收取的費(fèi)用,即
(7)Costi(T)表示在時(shí)間段T內(nèi)為組件i提供容錯(cuò)服務(wù)時(shí)的總成本開銷,即
下文使用最優(yōu)化方法求解最優(yōu)的容錯(cuò)即服務(wù)提供方案.同場(chǎng)景1中的設(shè)置,Repi(T)、NVPi(T)、CPi(T)的初值均為 1.設(shè)k=T或T1.因?yàn)橹挥蟹顷P(guān)鍵性組件才能降低其可靠性,故求解最優(yōu)容錯(cuò)服務(wù)提供方案應(yīng)滿足條件式(29);因?yàn)橹稳蒎e(cuò)服務(wù)而使用的虛擬機(jī)數(shù)量不能超過容錯(cuò)服務(wù)提供商現(xiàn)有的虛擬機(jī)數(shù)量(可描述為V(T))與外租的虛擬機(jī)數(shù)量之和,支撐容錯(cuò)服務(wù)而使用的存儲(chǔ)單元數(shù)量同理,故求解方案應(yīng)滿足條件式(30)和式(31).此外,求解最優(yōu)容錯(cuò)服務(wù)提供方案時(shí)還應(yīng)滿足前述提到的條件式(23)~式(27).
通過上述分析,目標(biāo)函數(shù)定義為云容錯(cuò)服務(wù)提供商為所有組件在時(shí)間段[0,T]和時(shí)間段[T,T+1]內(nèi),提供容錯(cuò)服務(wù)的總開銷與因?yàn)榻档徒M件可靠性而少收取的費(fèi)用之和最小.該目標(biāo)函數(shù)可用公式(32)描述.
其中,sumLoseFeeTT1是sumLoseFee(T)和sumLoseFee(T1)之和.servedTnonT1i(T)表示僅為組件i在時(shí)間段T內(nèi)提供容錯(cuò)服務(wù)時(shí)的開銷.同理,servedT1nonTi(T1)表示僅在時(shí)間段T1內(nèi)提供容錯(cuò)服務(wù)時(shí)的開銷,即
這樣,滿足約束條件式(23)~式(27)以及式(29)~式(31),并使目標(biāo)函數(shù)最小的解,就是本場(chǎng)景下在時(shí)間段T和T1內(nèi),應(yīng)為云應(yīng)用系統(tǒng)中各服務(wù)組件提供的最優(yōu)化容錯(cuò)即服務(wù)方案.需要特別說明的是,若兩個(gè)相繼的時(shí)間段內(nèi)云容錯(cuò)服務(wù)提供商的資源出現(xiàn)不足,如時(shí)間段T內(nèi)資源足夠而在時(shí)間段T1內(nèi)資源不足,那么求解最優(yōu)方案時(shí)使用公式(32)描述目標(biāo)函數(shù),且k=T時(shí)滿足約束條件式(22)~式(27),k=T1時(shí)滿足約束條件式(23)~式(27)及式(29)~式(31).
本文使用 CloudSim[19]建立云應(yīng)用系統(tǒng)運(yùn)行的云數(shù)據(jù)中心,使用 Lingo[20]求解最優(yōu)化容錯(cuò)即服務(wù)方案.將本文提出的容錯(cuò)服務(wù)提供方法(記為非固定容錯(cuò)服務(wù))與預(yù)先設(shè)置容錯(cuò)技術(shù)的容錯(cuò)服務(wù)提供方法(記為固定容錯(cuò)服務(wù)),在提供商支付開銷、云服務(wù)組件支付費(fèi)用及組件服務(wù)質(zhì)量等方面進(jìn)行比較.本文將組件個(gè)數(shù)分別設(shè)置為6、9、19和29,以模擬不同大小規(guī)模的云應(yīng)用系統(tǒng).下面分別針對(duì)支撐容錯(cuò)服務(wù)的底層云資源是否足夠的兩種實(shí)驗(yàn)場(chǎng)景,給出可用容錯(cuò)即服務(wù)提供方案的最優(yōu)化求解過程,并完成本文所提方法的優(yōu)勢(shì)分析.
不失一般性,參照文獻(xiàn)[13,21]完成本實(shí)驗(yàn)所需各類數(shù)據(jù)的設(shè)置.將數(shù)據(jù)中心大小s設(shè)置為60TB,數(shù)據(jù)中心的調(diào)節(jié)系數(shù)u設(shè)置為 1.設(shè)置組件在[0,1]時(shí)間段請(qǐng)求容錯(cuò)服務(wù);URelia設(shè)置為初始可靠性與(0,0.01)之間的任一隨機(jī)數(shù)的和,初始可靠性由云應(yīng)用系統(tǒng)研發(fā)者初始確定,本文將其設(shè)置為(0.935,1)之間的隨機(jī)數(shù).設(shè)置可靠性誤差DRelia為(0,0.01)之間的任一隨機(jī)數(shù).設(shè)置組件響應(yīng)時(shí)間為(0.5,4.5)之間的隨機(jī)數(shù).表2給出了一個(gè)具體云應(yīng)用系統(tǒng)(AID為1)的6個(gè)服務(wù)組件在[0,1]時(shí)間段的容錯(cuò)需求(注:[1,2]時(shí)間段的組件容錯(cuò)需求設(shè)置過程相同).
Table 2 Example of fault tolerance requirements of service components in a cloud application表2 云應(yīng)用系統(tǒng)的服務(wù)組件容錯(cuò)需求示例
設(shè)置實(shí)驗(yàn)中用到的其他參數(shù)的數(shù)值.根據(jù)亞馬遜云平臺(tái)的資源價(jià)格,設(shè)置priceVmHour為0.085,即每小時(shí)每臺(tái)虛擬機(jī)的費(fèi)用為$0.085;perCostStorage為0.15,即1G大小的數(shù)據(jù)每月的存儲(chǔ)費(fèi)用為為為$0.2;Tchk為 2s;w為 0.9;權(quán)重因子均為 1.設(shè)置costPerInnovation=2×(0.085+0.15/(30×24))/(60×60)≈0.00005.設(shè)置λ=6,λ′=0.1,μ=8,c=0.001s,δ=0.00025s,τv=0.5s,τ1=1/μ,τj=1/μ+0.005,ΔTvm=ΔTstor=1.
云容錯(cuò)服務(wù)提供商總開銷的實(shí)驗(yàn)結(jié)果如圖1所示;組件平均支付費(fèi)用的實(shí)驗(yàn)結(jié)果如圖2所示.
Fig.1 Total cost of fault tolerance provider as resource is enough圖1 云資源足夠時(shí)容錯(cuò)服務(wù)提供商的總開銷
Fig.2 Average expense of components as resource is enough圖2 云資源足夠時(shí)組件平均支付費(fèi)用
分析可知,與固定容錯(cuò)服務(wù)模式相比,非固定容錯(cuò)服務(wù)提供模式不但降低了云容錯(cuò)服務(wù)供應(yīng)商的總開銷,還降低了組件平均支付費(fèi)用.也就是說,當(dāng)用于支撐容錯(cuò)服務(wù)的云資源足夠時(shí),本文所提方法降低了云應(yīng)用系統(tǒng)需支付的容錯(cuò)服務(wù)費(fèi)用且云應(yīng)用系統(tǒng)容錯(cuò)需求得到很好的滿足.同時(shí),支撐容錯(cuò)服務(wù)的底層云資源的開銷有所下降,這樣,云容錯(cuò)服務(wù)提供商收益更好,提高了容錯(cuò)服務(wù)提供商為多個(gè)云應(yīng)用實(shí)施高效、可靠容錯(cuò)即服務(wù)的能力.
組件平均支付費(fèi)用的實(shí)驗(yàn)結(jié)果如圖 3所示;云容錯(cuò)服務(wù)提供商因?yàn)榻档徒M件可靠性而少收取的費(fèi)用,即降低的容錯(cuò)服務(wù)質(zhì)量的實(shí)驗(yàn)結(jié)果如圖4所示;云容錯(cuò)服務(wù)提供商的總開銷實(shí)驗(yàn)結(jié)果如圖5所示.
分析可知,與固定容錯(cuò)服務(wù)模式相比,非固定容錯(cuò)服務(wù)提供模式不但降低了云容錯(cuò)服務(wù)供應(yīng)商的總開銷,還降低了組件平均支付費(fèi)用,同時(shí)很好地保障了云應(yīng)用系統(tǒng)的容錯(cuò)服務(wù)質(zhì)量.也就是說,當(dāng)用于支撐容錯(cuò)服務(wù)的云資源不足時(shí),本文所提方法降低了云應(yīng)用系統(tǒng)需支付的容錯(cuò)服務(wù)費(fèi)用且云應(yīng)用系統(tǒng)容錯(cuò)需求和容錯(cuò)服務(wù)質(zhì)量得到很好的滿足.同時(shí),支撐容錯(cuò)服務(wù)的底層云資源的開銷有所下降,這樣,云容錯(cuò)服務(wù)提供商收益更好,同樣提高了容錯(cuò)服務(wù)提供商為多個(gè)云應(yīng)用實(shí)施高效、可靠容錯(cuò)即服務(wù)的能力.
Fig.3 Average expense of components as resource is not enough 圖3 云資源不足時(shí)組件平均支付費(fèi)用
Fig.4 Reduced service quality as resource is not enough圖4 云資源不足時(shí)降低的服務(wù)質(zhì)量
Fig.5 Total cost of fault tolerance provider as resource is not enough圖5 云資源不足時(shí)容錯(cuò)服務(wù)提供商的總開銷
本文應(yīng)用云環(huán)境下容錯(cuò)即服務(wù)的新型模式,提出了一種優(yōu)化的云容錯(cuò)服務(wù)動(dòng)態(tài)提供方法,云應(yīng)用系統(tǒng)的容錯(cuò)需求重點(diǎn)從服務(wù)組件的可靠性、響應(yīng)時(shí)間及數(shù)值容錯(cuò)等方面描述,以復(fù)制、檢查點(diǎn)和NVP這3種容錯(cuò)技術(shù)為基礎(chǔ),分別針對(duì)支撐容錯(cuò)服務(wù)的底層云資源是否足夠的場(chǎng)景,給出可用容錯(cuò)即服務(wù)提供方案的最優(yōu)化求解方法,且容錯(cuò)服務(wù)提供方案重點(diǎn)考慮了容錯(cuò)服務(wù)動(dòng)態(tài)切換產(chǎn)生的開銷.對(duì)不同規(guī)模的云應(yīng)用系統(tǒng)容錯(cuò)實(shí)際需求進(jìn)行實(shí)驗(yàn)分析,結(jié)果表明,與固定容錯(cuò)服務(wù)模式相比,從云容錯(cuò)服務(wù)提供商實(shí)施云容錯(cuò)服務(wù)的角度,用于支撐容錯(cuò)服務(wù)的底層云資源的開銷有所下降,使服務(wù)收益更好,且提高了實(shí)施高效、可靠容錯(cuò)即服務(wù)的能力;而從云應(yīng)用系統(tǒng)容錯(cuò)需求的角度,降低了云應(yīng)用系統(tǒng)需支付的容錯(cuò)服務(wù)費(fèi)用且云應(yīng)用系統(tǒng)容錯(cuò)需求和容錯(cuò)服務(wù)質(zhì)量得到很好的滿足.下一步研究中,一方面將擴(kuò)展更多容錯(cuò)技術(shù)來驗(yàn)證本文所提方法的可用性,另一方面將嘗試在真實(shí)云應(yīng)用系統(tǒng)的容錯(cuò)需求環(huán)境中確認(rèn)本文所提方法的實(shí)際執(zhí)行效果.