徐瑛楠,孫景睿
(1.吉林建筑科技學(xué)院管理工程學(xué)院,吉林長(zhǎng)春 130114;2.長(zhǎng)春理工大學(xué)人工智能學(xué)院,吉林長(zhǎng)春 130022)
云平臺(tái)亦稱云計(jì)算平臺(tái),其服務(wù)是基于硬件和軟件資源相結(jié)合的方式,為用戶提供計(jì)算、資源分配等功能,伴隨著計(jì)算機(jī)和網(wǎng)絡(luò)等方面技術(shù)的不斷發(fā)展[1],云計(jì)算技術(shù)被越來越多的人熟知。由于目前用戶需求具有復(fù)雜性和多變性,目前的服務(wù)器端設(shè)備和任務(wù)均為異構(gòu)形式,且各個(gè)企業(yè)提供的任務(wù)分配標(biāo)準(zhǔn)不同,其任務(wù)分配方式也不盡相同[2],因此增加了云計(jì)算的任務(wù)分配難度。
針對(duì)任務(wù)分配所存在的一系列問題,陳健等人[3]提出的工業(yè)設(shè)計(jì)云服務(wù)平臺(tái)協(xié)同任務(wù)模塊化重組與分配方法,該方法利用定量分析方式研究各個(gè)任務(wù)之間關(guān)系,建立并轉(zhuǎn)化趨向矩陣完成任務(wù)分配,當(dāng)各個(gè)任務(wù)之間相對(duì)重要度相同時(shí),需經(jīng)過大量運(yùn)算方可實(shí)現(xiàn)任務(wù)分配,所用時(shí)間較長(zhǎng),分配效率稍低。束柬等人[4]研究基于信任的云服務(wù)系統(tǒng)多目標(biāo)任務(wù)分配,該任務(wù)分配方法利用傳感器實(shí)現(xiàn)任務(wù)信息采集,利用多目標(biāo)分配模型實(shí)現(xiàn)任務(wù)分配,其傳感器任務(wù)采集方式存在一定缺陷,造成任務(wù)信息不夠準(zhǔn)確,導(dǎo)致最終分配效果不理想。
微服務(wù)架構(gòu)作為云中部署服務(wù)的新技術(shù),該技術(shù)可獨(dú)立運(yùn)行自己的程序,通過API實(shí)現(xiàn)服務(wù)間溝通,其中Spring Cloud作為新型微服務(wù)架構(gòu)開發(fā)平臺(tái),可實(shí)現(xiàn)在特定服務(wù)增減某一項(xiàng)具體功能,且不影響整體進(jìn)程的架構(gòu)。動(dòng)態(tài)規(guī)劃算法是計(jì)算決策過程最優(yōu)化算法,該算法被廣泛應(yīng)用在工程、經(jīng)濟(jì)、計(jì)算機(jī)等領(lǐng)域,可實(shí)現(xiàn)資源管理、分配等問題[5]。結(jié)合動(dòng)態(tài)規(guī)劃算法,研究基于微服務(wù)架構(gòu)的智慧云平臺(tái)任務(wù)分配相關(guān)問題,為智慧云平臺(tái)發(fā)展提供相應(yīng)數(shù)據(jù)支撐。
Spring Cloud可為平臺(tái)使用者提供在配置管理、任務(wù)發(fā)現(xiàn)、集群狀態(tài)管理等方面快速構(gòu)建工具,屬于技術(shù)含量較高的微服務(wù)架構(gòu),也是框架的有序集合,用戶通過Spring Cloud微服務(wù)架構(gòu)實(shí)現(xiàn)快速啟動(dòng)任務(wù)、建立應(yīng)用和云平臺(tái)資源對(duì)接等功能[6],本文利用Spring Cloud微服務(wù)架構(gòu)建立基于Spring Cloud微服務(wù)智慧云平臺(tái),平臺(tái)結(jié)構(gòu)如圖1所示。
圖1 基于Spring Cloud微服務(wù)智慧云平臺(tái)結(jié)構(gòu)示意圖
該平臺(tái)主要由服務(wù)網(wǎng)關(guān)層、任務(wù)分配層、服務(wù)層和配置集群層等組成,pc端通過服務(wù)網(wǎng)關(guān)層調(diào)用服務(wù)層和任務(wù)分配層服務(wù)與用戶層,而任務(wù)分配層通過GIT倉庫拉取配置后,建立云任務(wù)分配模型,利用配置集群層獲取配置完成任務(wù)分配功能[7]。
目前,最為新興的商業(yè)化計(jì)算模式為云計(jì)算模式,該服務(wù)均以用戶滿意度(Qos)為前提[8],為用戶提供標(biāo)準(zhǔn)服務(wù),因此智慧云平臺(tái)的任務(wù)分配需滿足Qos標(biāo)準(zhǔn),智慧云平臺(tái)的任務(wù)分配層采用云任務(wù)分配模型完成任務(wù)分配,智慧云平臺(tái)的任務(wù)分配模型示意圖如圖2所示。
圖2 智慧云平臺(tái)的任務(wù)分配模型示意圖
任務(wù)分配模型的主要由任務(wù)分配層和云數(shù)據(jù)中心層組成,任務(wù)分配流程在任務(wù)分配層完成,依據(jù)用戶需求調(diào)用云數(shù)據(jù)庫內(nèi)任務(wù)數(shù)據(jù),利用任務(wù)分配動(dòng)態(tài)規(guī)劃算法完成為用戶分配相對(duì)應(yīng)的任務(wù)。
在建立任務(wù)分配數(shù)學(xué)模型之前,需明確和動(dòng)態(tài)規(guī)劃相關(guān)的概念[9]。假設(shè)依據(jù)時(shí)間或空間劃分表示決策順序的離散量稱為階段變量,由k表示;對(duì)每一個(gè)狀態(tài)取值的變量由狀態(tài)變量Ok表示;由一個(gè)狀態(tài)過渡到下一個(gè)狀態(tài)的過程為dk(Ok),由決策dk表示;以狀態(tài)Ok為基礎(chǔ),決策dk形成的第k個(gè)階段指標(biāo)由階段指標(biāo)函數(shù)Vk(Ok,dk)表示;以狀態(tài)Ok為基礎(chǔ),決策dk,dk+1,…,dn形成過程指標(biāo)由V(Ok,dk,dk+1,…,dn)表示,其中動(dòng)態(tài)規(guī)劃過程指標(biāo)具有分離性,指標(biāo)表達(dá)公式如下
Vk,n(Ok,dk,dk+1,…,dn)=Vk(Ok,dk)+
Vk+1(Ok+1,dk+1,…,dn)
(1)
當(dāng)動(dòng)態(tài)規(guī)劃過程指標(biāo)為式(1)時(shí),則該指標(biāo)具有可加性[10-11]。此時(shí)動(dòng)態(tài)規(guī)劃最優(yōu)分配方案的遞歸模型:假設(shè)Pk,n表示所有的策略,以狀態(tài)Ok為基礎(chǔ),過程指標(biāo)的最優(yōu)值為最優(yōu)指標(biāo)函數(shù),其由fk(ok)表示,則最優(yōu)指標(biāo)函數(shù)表達(dá)公式如下
(2)
上述公式中k=1,2,…n。
當(dāng)動(dòng)態(tài)規(guī)劃指標(biāo)具有可加性時(shí),最優(yōu)指標(biāo)函數(shù)的加權(quán)函數(shù)表達(dá)公式如下:
(3)
依據(jù)動(dòng)態(tài)規(guī)劃基本概念所建立的數(shù)學(xué)模型可稱為任務(wù)圖到智慧云平臺(tái)的映射過程,其過程如下:
第一:令R表示用戶需求和等待分配任務(wù)集合,則該集合可由R(T,Q)表示成任務(wù)圖,其中,T={t1,t2,…tn},任務(wù)集、節(jié)點(diǎn)的權(quán)重、子任務(wù)運(yùn)行時(shí)間分別由T、Ti、i表示;Q={q1,q2,…qm},其中通信集qi=(ti,tk)由Q表示,是兩個(gè)節(jié)點(diǎn)之間邊的權(quán),表示兩個(gè)子任務(wù)之間的通信量。
第二:智慧云平臺(tái)屬于并行計(jì)算平臺(tái),平臺(tái)關(guān)系圖H=(P,E)表示該平臺(tái),其中,虛擬機(jī)集合由P表示。
第三:令矩陣EET表示n個(gè)任務(wù)分配到m個(gè)虛擬機(jī)完成時(shí)間,第i行表示第i個(gè)任務(wù)分配到各個(gè)虛擬機(jī)上的分配完成時(shí)間,EETij則表示第i個(gè)任務(wù)在第j個(gè)虛擬機(jī)上的分配完成時(shí)間。矩陣表達(dá)式如下
(4)
第四:在終端機(jī)上,以任務(wù)分配層分配任務(wù)時(shí)間最長(zhǎng)的虛擬機(jī)分配完成時(shí)間作為任務(wù)分配完成的目標(biāo)[12],其終端條件計(jì)算公式如下
(5)
依據(jù)上述遞歸模型和動(dòng)態(tài)規(guī)劃模式計(jì)算多任務(wù)多處理機(jī)制的分配算法,假設(shè)R個(gè)任務(wù)集合內(nèi)存在p個(gè)任務(wù),且p為整數(shù),建立最短分配時(shí)間函數(shù)Gi(o),且0≤i≤n,0≤x≤p,分配第i個(gè)任務(wù)給所有節(jié)點(diǎn)的全局最短時(shí)間表達(dá)公式如下
(6)
其中
(7)
在式(7)中,G(p)最小oi分配方案為:將每個(gè)節(jié)點(diǎn)依據(jù)其順序進(jìn)行編號(hào)后,第o個(gè)任務(wù)分配給第i節(jié)點(diǎn)的最短時(shí)間fi(o)和分配給第i節(jié)點(diǎn)最短時(shí)間的任務(wù)份額數(shù)di(o),其計(jì)算步驟如下:
第一步:在一個(gè)節(jié)點(diǎn)上,分配o個(gè)任務(wù),其計(jì)算公式如下
f1(o)=G1(o)
(8)
其中,x=d1(o),且滿足0≤o≤p。
第二步:在第一個(gè)節(jié)點(diǎn)和第二個(gè)節(jié)點(diǎn)上分配o個(gè)任務(wù),其計(jì)算公式如下:
(9)
上述公式中,0≤z≤x。
依據(jù)式(9)可知,前i個(gè)節(jié)點(diǎn)分配到o個(gè)任務(wù)計(jì)算公式如下:
假設(shè)bi表示第i個(gè)階段最短分配完成時(shí)間,其計(jì)算公式如下
bi=min{fi(1),fi(2),…,fi(p)}
(10)
假設(shè)li是使第i個(gè)階段最短分配完成時(shí)間的前個(gè)節(jié)點(diǎn)的任務(wù)份額
li=fi(o)
(11)
在每個(gè)任務(wù)分配步驟中,將計(jì)算得到的第i個(gè)階段最短分配完成時(shí)間、第i個(gè)階段最短分配完成時(shí)間的前個(gè)節(jié)點(diǎn)的任務(wù)份額、第o個(gè)任務(wù)分配給第i節(jié)點(diǎn)的最短時(shí)間和分配給第i節(jié)點(diǎn)最短時(shí)間的任務(wù)份額數(shù)保存。當(dāng)最后一個(gè)任務(wù)分配完成后,假設(shè)mint表示全部任務(wù)分配完成最短時(shí)間,其計(jì)算公式如下
mint=min(b1,b2,…,bn)
(12)
當(dāng)全部任務(wù)分配完成后,此時(shí)分配任務(wù)節(jié)點(diǎn)的最大編號(hào)為k,此時(shí)分配給前面k個(gè)節(jié)點(diǎn)的最優(yōu)份額計(jì)算公式如下
lk=fk(o)
(13)
通過上述計(jì)算步驟,可實(shí)現(xiàn)任務(wù)分配求解,先計(jì)算將x個(gè)任務(wù)分配給前i個(gè)節(jié)點(diǎn)的最短分配完成時(shí)間和該節(jié)點(diǎn)分配到的任務(wù)份額數(shù),再計(jì)算每個(gè)節(jié)點(diǎn)的最短完成時(shí)間、全部任務(wù)分配完成時(shí)間和總份額以及最大編號(hào)k值,完成所有任務(wù)分配。
為驗(yàn)證本文方法在智慧云平臺(tái)任務(wù)分配過程中的各項(xiàng)性能,并考慮云計(jì)算環(huán)境的復(fù)雜性,使用Cloudsim4.0仿真軟件,處理器為AMD Athlon(tm)IIX250 Processor,內(nèi)存為4.0GB,64位操作系統(tǒng)。通過Cloudsim模擬云計(jì)算局部域,虛擬機(jī)節(jié)點(diǎn)數(shù)量為8,設(shè)置待分配任務(wù)數(shù)為100個(gè),分別運(yùn)行本文方法、文獻(xiàn)[3]方法和文獻(xiàn)[4]方法,測(cè)試三種方法實(shí)際使用性能,其中文獻(xiàn)[3]方法表示工業(yè)設(shè)計(jì)云服務(wù)平臺(tái)協(xié)同任務(wù)模塊化重組與分配方法,文獻(xiàn)[4]方法表示基于信任的云服務(wù)系統(tǒng)多目標(biāo)任務(wù)分配方法。
統(tǒng)計(jì)三種方法分配100個(gè)任務(wù)耗時(shí)情況,結(jié)果如圖3所示。
圖3 三種方法任務(wù)分配耗時(shí)
分析圖3可知,三種方法分配任務(wù)完成時(shí)間均隨著任務(wù)數(shù)量的增加而增加,本文算法在任務(wù)數(shù)為10~30個(gè)之間時(shí),其任務(wù)分配完成時(shí)間為8s左右,任務(wù)分配完成時(shí)間無明顯增加,當(dāng)任務(wù)數(shù)為40~100個(gè)之間時(shí),任務(wù)分配完成時(shí)間逐漸增加,且增加幅度較小,而文獻(xiàn)[3]方法與文獻(xiàn)[4]方法在100個(gè)任務(wù)分配過程中,二者分配完成時(shí)間均較高,且增長(zhǎng)幅度較大,當(dāng)分配任務(wù)為100個(gè)時(shí),本文算法任務(wù)分配完成時(shí)間為45s,較文獻(xiàn)[3]方法與文獻(xiàn)[4]方法任務(wù)分配完成時(shí)間分別低26s和38s,由此可知,本文方法在任務(wù)數(shù)量相同時(shí),其在任務(wù)分配時(shí)間上具有較高優(yōu)勢(shì)。
以平均負(fù)載為指標(biāo),統(tǒng)計(jì)三種方法在分配任務(wù)數(shù)為20個(gè)、40個(gè)、80個(gè)時(shí)負(fù)載情況。平均負(fù)載為單位時(shí)間內(nèi),系統(tǒng)處于可運(yùn)行狀態(tài)和不可中斷狀態(tài)的進(jìn)程數(shù)。結(jié)果如圖4所示。
圖4 三種方法分配任務(wù)負(fù)載情況
由圖4三組圖形數(shù)據(jù)中可知,當(dāng)任務(wù)數(shù)量增加時(shí),三種方法分配任務(wù)時(shí)的負(fù)載值也隨之增加,通過對(duì)比三種方法在任務(wù)數(shù)量相同時(shí)的負(fù)載值,可知本文方法較文獻(xiàn)[3]方法和文獻(xiàn)[4]方法而言具備較高的負(fù)載平衡性。
上述實(shí)驗(yàn)是在有負(fù)載情況下,驗(yàn)證本文方法的負(fù)載平衡性,處于無負(fù)載情況時(shí),以任務(wù)分配利用率作為衡量三種分配方法可靠性指標(biāo),統(tǒng)計(jì)8個(gè)虛擬機(jī)節(jié)點(diǎn)任務(wù)分配率情況,結(jié)果如圖5所示。
圖5 三種方法任務(wù)分配利用率
綜合分析圖5可知,當(dāng)在無負(fù)載情況下,本文方法的資源使用率較平穩(wěn),其分配合理性較高,而文獻(xiàn)[3]方法和文獻(xiàn)[4]方法的任務(wù)利用率波動(dòng)較大,對(duì)虛擬機(jī)節(jié)點(diǎn)壓力相對(duì)較大,可見文獻(xiàn)[3]方法和文獻(xiàn)[4]方法運(yùn)行處于運(yùn)行不穩(wěn)定狀態(tài),由此可知,本文方法任務(wù)分配合理且具有較高可靠性。
統(tǒng)計(jì)三種方法在任務(wù)分配過程中的負(fù)影響因子數(shù)值,研究三種方法任務(wù)分配效率情況,結(jié)果如表1所示。
表1 三種方法的負(fù)影響因子數(shù)值情況
分析表1可知,三種方法在進(jìn)行任務(wù)分配時(shí),其負(fù)影響因子數(shù)值與任務(wù)數(shù)量成正比,當(dāng)任務(wù)數(shù)量相同時(shí),本文方法的負(fù)影響因子數(shù)值均低于文獻(xiàn)[3]方法與文獻(xiàn)[4]方法,其中當(dāng)任務(wù)數(shù)量為100時(shí),三種方法的負(fù)影響因子數(shù)值之間差值最大,本文算法負(fù)影響因子數(shù)值僅為0.16,由此可知,本文算法任務(wù)分配效率最高。
在云計(jì)算里,任務(wù)分配的有效度相當(dāng)重要,對(duì)智慧云平臺(tái)的整體服務(wù)性能來說影響巨大。為此,研究基于微服務(wù)架構(gòu)的智慧云平臺(tái)任務(wù)分配方法,將Spring Cloud微服務(wù)架構(gòu)與動(dòng)態(tài)規(guī)劃算法相結(jié)合,實(shí)現(xiàn)任務(wù)分配。實(shí)驗(yàn)結(jié)果表明:該算法在任務(wù)量相同時(shí),在任務(wù)分配時(shí)間上具有較高優(yōu)勢(shì)且分配負(fù)載數(shù)值較低,負(fù)載平衡性能強(qiáng);在無負(fù)載情況時(shí),分配合理性較高,可靠性強(qiáng)等。
本文方法雖然能有效實(shí)現(xiàn)任務(wù)分配功能,且具有分配時(shí)間短、負(fù)載平衡性強(qiáng)等特點(diǎn),但在網(wǎng)絡(luò)技術(shù)日新月異的情況下,本文方法仍存在一定不足之處,如在分配過程中存在的冗余性,不僅消耗分配時(shí)間,也提升了分配復(fù)雜度,對(duì)于任務(wù)存儲(chǔ)類型不夠?qū)挿?,因此還需在基于用戶需求的基礎(chǔ)上,更加完善任務(wù)分配方法。