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