欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于混合云的可靠應(yīng)用分配分布式遺傳算法的制作方法

文檔序號(hào):11432854閱讀:287來(lái)源:國(guó)知局
一種基于混合云的可靠應(yīng)用分配分布式遺傳算法的制造方法與工藝

本發(fā)明涉及云技術(shù)技術(shù)領(lǐng)域,具體涉及一種基于混合云的可靠應(yīng)用分配分布式遺傳算法。



背景技術(shù):

由于現(xiàn)有的以云計(jì)算為核心的集中式大數(shù)據(jù)處理技術(shù)已經(jīng)不能完全滿足日益龐大的物聯(lián)網(wǎng)邊緣設(shè)備所產(chǎn)生的海量數(shù)據(jù)處理要求,所以需要一個(gè)新的云架構(gòu),這種新的架構(gòu)體系應(yīng)該能快速響應(yīng)邊緣設(shè)備的需求,以減少云計(jì)算中心的數(shù)據(jù)傳輸及處理壓力?;旌显聘拍顟?yīng)運(yùn)而生,其由多個(gè)單個(gè)的具有異構(gòu)功能的小云組成,他們?cè)诒苊猱a(chǎn)生大的網(wǎng)絡(luò)延遲的同時(shí)能提供更快地?cái)?shù)據(jù)計(jì)算。然而,這種云環(huán)境常常包含一些容易導(dǎo)致任務(wù)失敗的不可靠的節(jié)點(diǎn)和鏈路。因此,具有有效性保障的應(yīng)用調(diào)度是目前研究面臨的挑戰(zhàn)。應(yīng)用程序需要一種配置算法能兼顧cpu、存儲(chǔ)、網(wǎng)絡(luò)和有效性以盡可能優(yōu)化地使用資源,并保持很小的出錯(cuò)率。應(yīng)用程序在基礎(chǔ)設(shè)施網(wǎng)絡(luò)中的優(yōu)化調(diào)度是一個(gè)np-hard難度問(wèn)題,因此,精確的算法用來(lái)解決此問(wèn)題是不可擴(kuò)展的。

遺傳算法(geneticalgorithm)是一類借鑒生物界的進(jìn)化規(guī)律(適者生存,優(yōu)勝劣汰遺傳機(jī)制)演化而來(lái)的隨機(jī)化搜索方法。它是由美國(guó)的j.holland教授1975年首先提出,其主要特點(diǎn)是直接對(duì)結(jié)構(gòu)對(duì)象進(jìn)行操作,不存在求導(dǎo)和函數(shù)連續(xù)性的限定;具有內(nèi)在的隱并行性和更好的全局尋優(yōu)能力;采用概率化的尋優(yōu)方法,能自動(dòng)獲取和指導(dǎo)優(yōu)化的搜索空間,自適應(yīng)地調(diào)整搜索方向,不需要確定的規(guī)則。遺傳算法的這些性質(zhì),已被人們廣泛地應(yīng)用于組合優(yōu)化、機(jī)器學(xué)習(xí)、信號(hào)處理、自適應(yīng)控制和人工生命等領(lǐng)域。它是現(xiàn)代有關(guān)智能計(jì)算中的關(guān)鍵技術(shù)。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中的上述缺陷,提供一種基于混合云的可靠應(yīng)用分配分布式遺傳算法,該算法創(chuàng)新應(yīng)用程序分配方法,提升混合云環(huán)境中應(yīng)用程序分配的可靠性,同時(shí)減小延遲。

本發(fā)明的目的可以通過(guò)采取如下技術(shù)方案達(dá)到:

一種基于混合云的可靠應(yīng)用分配分布式遺傳算法,所述算法包括:

s1、構(gòu)建優(yōu)化模型,該模型包括云環(huán)境模塊和應(yīng)用程序幾何模塊,過(guò)程如下:

s1-1、用一個(gè)實(shí)體設(shè)備集pms和一個(gè)實(shí)體鏈路集pls來(lái)構(gòu)建云環(huán)境;

s1-2、將應(yīng)用程序集合分配到云環(huán)境中,每個(gè)應(yīng)用包括一個(gè)服務(wù)集和一個(gè)虛擬鏈路集vls;

s2、根據(jù)混合云環(huán)境的特點(diǎn)及應(yīng)用分配所涉及內(nèi)容定義約束條件,過(guò)程如下:

s2-1、準(zhǔn)入控制:每個(gè)應(yīng)用程序分配的副本數(shù)最多不超過(guò)δ:

|d|=δ,

其中,δ為某個(gè)應(yīng)用程序的副本數(shù)量,d為某個(gè)應(yīng)用程序所有副本組成的集合;

至少有一個(gè)對(duì)應(yīng)的副本被分配時(shí),一個(gè)應(yīng)用程序才能被認(rèn)為成功分配:

其中,a表示某個(gè)應(yīng)用程序;d表示應(yīng)用程序a的副本d;a為所有應(yīng)用程序組成的集合,oa是一個(gè)變量,其定義為:如果應(yīng)用程序a被成功分配則值為1,反之為0;gd,a是一個(gè)變量,其定義為:如果應(yīng)用程序a的副本d被分配則值為1,反之為0;

s2-2、節(jié)點(diǎn)嵌入:只在副本被認(rèn)為已成功放置時(shí)才為其分配節(jié)點(diǎn)資源:

其中,s表示某個(gè)服務(wù),n表示某個(gè)實(shí)體設(shè)備pm,s為所有的服務(wù)組成的集合,n為所有的實(shí)體設(shè)備pm組成的集合,是一個(gè)變量,其定義為:如果節(jié)點(diǎn)n是應(yīng)用程序a的副本d對(duì)應(yīng)的服務(wù)s所占用的宿主則值為1,反之為0;ia,s是一個(gè)變量,其定義為:如果應(yīng)用程序a對(duì)應(yīng)的服務(wù)s被實(shí)例化則值為1,反之為0;

如果一個(gè)副本沒(méi)有成功放置則不會(huì)有實(shí)例化的服務(wù):

如果一個(gè)服務(wù)寄宿在一個(gè)節(jié)點(diǎn)上,那么cpu資源必須預(yù)先分配給該服務(wù):

其中,是一個(gè)變量,其定義為:如果實(shí)體設(shè)備pmn運(yùn)行應(yīng)用程序a對(duì)應(yīng)的服務(wù)s則值為1,反之為0;

對(duì)每個(gè)服務(wù)而言,其最多寄宿在一個(gè)節(jié)點(diǎn)上:

cpu和內(nèi)存資源的保護(hù)約束:

其中,ωs為服務(wù)s要求的cpu資源,ωn為實(shí)體設(shè)備pmn的cpu容量,且

其中,us,n是一個(gè)變量,其定義為:如果服務(wù)s寄宿在實(shí)體設(shè)備pmn上則值為1,反之為0,γs為服務(wù)s的存儲(chǔ)容量要求,γn為實(shí)體設(shè)備pmn的存儲(chǔ)容量;

一旦一個(gè)服務(wù)被某個(gè)副本使用,此服務(wù)必須寄宿在某個(gè)節(jié)點(diǎn)上:

s2-3、鏈路嵌入:在每個(gè)節(jié)點(diǎn)上的多網(wǎng)絡(luò)流約束可表示為:

其中,是一個(gè)變量,其定義為:如果服務(wù)s1與服務(wù)s2之間的虛擬鏈路部署在應(yīng)用程序a的副本d對(duì)應(yīng)的節(jié)點(diǎn)n1和n2之間的實(shí)體鏈路上則值為1,反之為0,e表示某個(gè)實(shí)體鏈路pl,e表示所有實(shí)體鏈路pl組成的集合;其中,

其中,是一個(gè)變量,其定義為:如果服務(wù)s1與服務(wù)s2之間的虛擬鏈路部署在應(yīng)用程序a的副本d對(duì)應(yīng)的實(shí)體鏈路e上則值為1,反之為0,是一個(gè)變量,其定義為:如果至少有一個(gè)應(yīng)用程序a的副本通過(guò)部署在其上的服務(wù)s1與服務(wù)s2之間的虛擬鏈路使用實(shí)體鏈路e則值為1,反之為0;

每個(gè)鏈路使用的總帶寬不能超過(guò)總連接能力:

其中,表示應(yīng)用程序a所對(duì)應(yīng)的兩個(gè)服務(wù)s1,s2之間的帶寬要求,be實(shí)體鏈路ple的帶寬限制;

s2-4、可靠性感知約束:對(duì)于一個(gè)可用副本,它所使用的每一個(gè)單獨(dú)組件必須是可用的,當(dāng)一個(gè)組件被任意一個(gè)副本的服務(wù)或虛擬鏈路使用時(shí)即認(rèn)為這個(gè)組件被此副本所使用:

其中,c表示某個(gè)實(shí)體組件,包括實(shí)體設(shè)備pm和實(shí)體鏈路pl,c為實(shí)體組件的集合,即c=n∪e,是一個(gè)變量,其定義為:實(shí)體組件c被應(yīng)用程序a的副本d所使用則值為1,反之為0;

單個(gè)組件的狀態(tài)描述為:

其中,χc表示實(shí)體組件c的狀態(tài);

一個(gè)組建的失敗概率:

基層網(wǎng)絡(luò)狀態(tài)可以被描述為:

x=(χ1,χ2,...,χ|c|);

s3、定義目標(biāo)函數(shù),將算法所要解決的問(wèn)題轉(zhuǎn)換為最大化分配的應(yīng)用數(shù)量:

pmn所使用的

pmn所使用的

ple所使用的

s4、定義染色體c,具體如下:

其中,a1,a2,...,aa,描述應(yīng)用分配的順序,其中aa表示應(yīng)用程序集合a中的第a個(gè)應(yīng)用程序;

描述如何給每個(gè)應(yīng)用和每個(gè)副本分配服務(wù)的順序,其中表示服務(wù)集合s中應(yīng)用程序|a|的副本δ|a|所對(duì)應(yīng)的第|sa|個(gè)服務(wù);

被用于選擇一個(gè)實(shí)體設(shè)備pm來(lái)運(yùn)行一個(gè)給定應(yīng)用的給定副本所對(duì)應(yīng)的服務(wù),其中表示實(shí)體設(shè)備pm集合n中運(yùn)行應(yīng)用程序|a|的副本δ|a|所對(duì)應(yīng)的第|sa|個(gè)服務(wù)的實(shí)體設(shè)備pm;

s5、構(gòu)建一個(gè)分布式池模型,一個(gè)集中池包含所有的遺傳算法中的個(gè)體,任務(wù)將分布式地選擇一個(gè)隨機(jī)的個(gè)體集來(lái)進(jìn)化成新的一代,在每一代中所有的個(gè)體都被存儲(chǔ)在分布池中,每個(gè)任務(wù)可以檢查結(jié)束條件,如有必要,任務(wù)可以計(jì)算下一代;

s6、譯碼,用一個(gè)譯碼算法將染色體轉(zhuǎn)換成一個(gè)解空間的解,過(guò)程如下:

s6-1、將應(yīng)用程序根據(jù)染色體的第一部分的值a1,a2,...,aa,進(jìn)行排序,如果要分配一個(gè)應(yīng)用,從第一個(gè)副本開(kāi)始分配,如果這個(gè)副本已被分配,檢查其可用性;

s6-2、按照染色體第二部分的值來(lái)確定一個(gè)給定的應(yīng)用a的給定副本δ所對(duì)應(yīng)的服務(wù)的排序;

s7、判斷應(yīng)用程序放置的數(shù)量或迭代次數(shù)是否達(dá)到規(guī)定值,過(guò)程如下:

s7-1、若已達(dá)到規(guī)定值,則跳到s13,算法結(jié)束得出對(duì)應(yīng)解集合;

s7-2、若未達(dá)到規(guī)定值,則執(zhí)行s8;

s8、計(jì)算個(gè)體的適應(yīng)度;

s9、復(fù)制,復(fù)制過(guò)程采用精英策略,即根據(jù)約束條件和計(jì)算的適應(yīng)度并按照一定比例選擇一部分優(yōu)秀個(gè)體復(fù)制形成下一代的子個(gè)體;

s10、選擇交叉,交叉的兩個(gè)個(gè)體,一個(gè)來(lái)自精英群體,另一個(gè)以隨機(jī)方式從全部個(gè)體中產(chǎn)生;

s11、變異,變異操作在下一代種群中增加更多的新個(gè)體,即按照初始解空間生成相同的分布,以隨機(jī)方式來(lái)選擇一些個(gè)體加入新一代的解空間;

s12、返回步驟s7;

s13、結(jié)束,輸出最優(yōu)解。

進(jìn)一步地,所述步驟s1-1中的云環(huán)境由5個(gè)實(shí)體設(shè)備pm和8個(gè)實(shí)體鏈路pl組成,實(shí)體鏈路pl按如下方式選擇,首先創(chuàng)建一個(gè)最小生成樹(shù),之后隨機(jī)添加邊直到混合云中出現(xiàn)8個(gè)實(shí)體鏈路集pl;

每個(gè)實(shí)體鏈路pl擁有帶寬為1,對(duì)每個(gè)實(shí)體設(shè)備pmn:ωn∈{0.5,2,10,50}并且γn∈{1,1.5,2},其中,ωn為實(shí)體設(shè)備pmn的cpu容量,γn為實(shí)體設(shè)備pmn的存儲(chǔ)容量;

對(duì)每個(gè)實(shí)體鏈路pl和每個(gè)實(shí)體設(shè)備pm,失效概率從集合{0,0.025,0.05}中均勻分布的隨機(jī)選擇;

每個(gè)實(shí)體設(shè)備pm有一個(gè)有限的cpu容量ω和一個(gè)有限的存儲(chǔ)容量γ,節(jié)點(diǎn)間的實(shí)體鏈路pl的特征是一個(gè)有限帶寬b,假設(shè)實(shí)體鏈路pl是對(duì)稱鏈路,節(jié)點(diǎn)和鏈路都有一個(gè)已知的故障概率,分別為pn、pl,假設(shè)故障發(fā)生時(shí)相互獨(dú)立的,同時(shí)也定義一個(gè)節(jié)點(diǎn)和鏈路的可用率分別為

進(jìn)一步地,所述步驟s1-2中假設(shè)服務(wù)是相對(duì)應(yīng)用獨(dú)立的,所以不同應(yīng)用可以共享同一個(gè)服務(wù),但是虛擬鏈路集是應(yīng)用專有的;每個(gè)服務(wù)都有一個(gè)確定的cpu容量ω和存儲(chǔ)容量γ要求,每個(gè)虛擬鏈路vl要求一定量的帶寬β;假設(shè)虛擬鏈路使用的帶寬是對(duì)稱的,應(yīng)用要求一個(gè)最小有效值r,以及可能存在一個(gè)最大副本數(shù)δa。

進(jìn)一步地,所述步驟s2-2中定義cpu負(fù)載系數(shù)clf,即被要求的cpu和云環(huán)境中可用的cpu之比,以評(píng)估輸入復(fù)雜性,cpu負(fù)載系數(shù)clf的值取0.1~1范圍,且步長(zhǎng)為0.1。

進(jìn)一步地,所述步驟s2-3中定義每一個(gè)包含10個(gè)應(yīng)用的應(yīng)用組至少有一個(gè)服務(wù),每個(gè)應(yīng)用的服務(wù)都從一個(gè)由3個(gè)服務(wù)組成的服務(wù)集合中以60%的概率隨機(jī)的選擇,對(duì)每個(gè)服務(wù)s:ωs在[0.2,1]的區(qū)間隨機(jī)選擇,而γs在[0.75,1]的區(qū)間隨機(jī)選擇,其中ωs為服務(wù)s要求的cpu資源,γs為服務(wù)s的存儲(chǔ)容量要求,對(duì)每個(gè)應(yīng)用a,所有的服務(wù)都相互連接至少|(zhì)sa|-1,且最大|sa|雙向vls的帶寬在[0.02,0.04]范圍隨機(jī)選擇,其中,sa為應(yīng)用程序a占用的所有服務(wù)組成的集合。

進(jìn)一步地,所述步驟s2-4中每個(gè)應(yīng)用程序要求的最小可用性(0%,90%,99%),交叉操作是統(tǒng)一交叉的,并且一個(gè)浮動(dòng)字符串以突變概率0.05發(fā)生個(gè)體突變,每個(gè)個(gè)體只能發(fā)生一個(gè)突變。

進(jìn)一步地,所述步驟s4中定義染色體c采用一個(gè)偏隨機(jī)秘鑰,偏隨機(jī)秘鑰染色體是一個(gè)在0到1之間取值的浮點(diǎn)數(shù)組,被用于染色體的解碼階段進(jìn)行決策,同時(shí),利用偏隨機(jī)秘鑰定義解碼方法。

進(jìn)一步地,所述步驟s5中分布式池模型框架基于evospace,同時(shí)取代原來(lái)的重新插入管理,增加容錯(cuò)機(jī)制并且使用一致的數(shù)據(jù)庫(kù),每個(gè)分布式的任務(wù)可以直接在數(shù)據(jù)庫(kù)中分配一存儲(chǔ)桶的個(gè)體,而其他的分布式任務(wù)不能選擇這個(gè)被分配的存儲(chǔ)桶,如果一個(gè)任務(wù)已經(jīng)完成工作,便將已經(jīng)分配過(guò)的舊的存儲(chǔ)桶從數(shù)據(jù)庫(kù)移除并且插入從下一代的存儲(chǔ)桶中隨機(jī)選擇的新的個(gè)體。

進(jìn)一步地,所述步驟s6-1中如果可保證的可用性比此應(yīng)用要求的可用性要高,則成功地分配了這個(gè)應(yīng)用并且將嘗試分配下一個(gè)應(yīng)用,如果這個(gè)可用性保證低于應(yīng)用要求,在還有多余的應(yīng)用的副本前提下將嘗試配置一個(gè)新的副本,如果可用性保證低于應(yīng)用要求并且沒(méi)有副本剩余,那這個(gè)應(yīng)用將不能被分配并且將從分配集中移除;

進(jìn)一步地,所述步驟s6-2中,對(duì)于每個(gè)服務(wù)s,創(chuàng)建一個(gè)所有能運(yùn)行服務(wù)s的pms的表l,以使得所有約束條件有效,同時(shí)必須檢查每個(gè)pm的cpu和存儲(chǔ)容量,以及相同副本的其它服務(wù)的帶寬;只有服從于所有這些參數(shù)的pms才是列表l的元素,如果表l為空,便可以從分配集合中移除應(yīng)用a,否則,如果|l|>0,算法對(duì)表l中的所有pms排序并選擇在位置的pm,這個(gè)pm將作為副本δ對(duì)應(yīng)服務(wù)s的主機(jī),并且通過(guò)檢測(cè)這個(gè)pm是否可以和其它服務(wù)建立網(wǎng)絡(luò)連接分配所找到的帶寬。

進(jìn)一步地,所述步驟s10中設(shè)交叉概率為0.7,即子代以0.7的概率從精英父代中獲得基因,以0.3的概率從一般個(gè)體中獲得基因。否則選擇第二個(gè)染色體。

本發(fā)明相對(duì)于現(xiàn)有技術(shù)具有如下的優(yōu)點(diǎn)及效果:

1)將傳統(tǒng)云環(huán)境中在遠(yuǎn)距離的云中心中處理的應(yīng)用程序放置到靠近終端用戶的邊緣云中的可用設(shè)備(包括基站、開(kāi)關(guān)、路由器甚至終端移動(dòng)設(shè)備等等)處理,不僅減少了延遲同時(shí)也節(jié)約了帶寬資源,減小了能耗;

2)傳統(tǒng)的應(yīng)用分配算法是不可伸縮的,且沒(méi)有可用性保證,導(dǎo)致在傳統(tǒng)云環(huán)境中,本發(fā)明提出一種用副本來(lái)增加應(yīng)用程序可用性的方法,同時(shí)也采用分布式遺傳算法定義了一個(gè)可伸縮算法來(lái)尋找一個(gè)好的配置方法。

3)相比已經(jīng)提出的ilp(整數(shù)線性規(guī)劃)方法在可用性要求提高時(shí)不可擴(kuò)展的缺點(diǎn),本發(fā)明提出的分布式遺傳算法是基于soa(面向服務(wù)的架構(gòu))的可擴(kuò)展的可調(diào)有效性的。

附圖說(shuō)明

圖1是本發(fā)明公開(kāi)的一種基于混合云的可靠應(yīng)用分配分布式遺傳算法流程圖;

圖2是evospace模型主要的組件和數(shù)據(jù)流;

圖3是偏隨機(jī)秘鑰遺傳算法交叉操作實(shí)例;

圖4是當(dāng)最小可用性要求為90%且應(yīng)用程序最大副本數(shù)為1時(shí),整數(shù)線性規(guī)劃(ilp)最優(yōu)解與測(cè)試算法的平均應(yīng)用配置比對(duì)比;

圖5是當(dāng)最小可用性要求為0時(shí),整數(shù)線性規(guī)劃(ilp)與測(cè)試算法的平均執(zhí)行時(shí)間對(duì)比;

圖6是當(dāng)最小可用性要求為90%且應(yīng)用程序最大副本數(shù)為1時(shí),整數(shù)線性規(guī)劃(ilp)與測(cè)試算法的平均執(zhí)行時(shí)間對(duì)比。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

實(shí)施例

附圖1是本發(fā)明公開(kāi)的一種基于混合云的可靠應(yīng)用分配分布式遺傳算法流程圖,下面結(jié)合附圖1,對(duì)本發(fā)明的步驟做進(jìn)一步描述:

s1、構(gòu)建優(yōu)化模型,包括兩個(gè)主要的模塊:云環(huán)境模塊和應(yīng)用程序幾何模塊。

s1-1、用一個(gè)實(shí)體設(shè)備集pm和一個(gè)實(shí)體鏈路集pl來(lái)構(gòu)建云環(huán)境。

在具體實(shí)施方式中,混合云環(huán)境由5個(gè)實(shí)體設(shè)備pm和8個(gè)實(shí)體鏈路pl組成。實(shí)體鏈路pl按如下方式選擇,首先創(chuàng)建一個(gè)最小生成樹(shù),之后隨機(jī)添加邊直到混合云中出現(xiàn)8個(gè)實(shí)體鏈路pl。每個(gè)實(shí)體鏈路pl擁有帶寬為1。對(duì)每個(gè)實(shí)體設(shè)備pmn:ωn∈{0.5,2,10,50}并且γn∈{1,1.5,2},其中,ωn為實(shí)體設(shè)備pmn的cpu容量,γn為實(shí)體設(shè)備pmn的存儲(chǔ)容量。

對(duì)每個(gè)實(shí)體鏈路pl和每個(gè)實(shí)體設(shè)備pm,失效概率從集合{0,0.025,0.05}中均勻分布的隨機(jī)選擇。

每個(gè)實(shí)體設(shè)備pm有一個(gè)有限的cpu容量ω和一個(gè)有限的存儲(chǔ)容量γ。節(jié)點(diǎn)間的實(shí)體鏈路pl的特征是一個(gè)有限帶寬b。假設(shè)實(shí)體鏈路pl是對(duì)稱鏈路。節(jié)點(diǎn)和鏈路都有一個(gè)已知的故障概率,分別為pn、pl。假設(shè)故障發(fā)生時(shí)相互獨(dú)立的。同時(shí)也定義一個(gè)節(jié)點(diǎn)和鏈路的可用率分別為

s1-2、應(yīng)用程序集合分配到云環(huán)境中,每個(gè)應(yīng)用包括一個(gè)服務(wù)集和一個(gè)虛擬鏈路集。

假設(shè)服務(wù)是相對(duì)應(yīng)用獨(dú)立的,所以不同應(yīng)用可以共享同一個(gè)服務(wù),但是虛擬鏈路vl是應(yīng)用專有的。每個(gè)服務(wù)都有一個(gè)確定的cpu容量ω和存儲(chǔ)容量γ要求。另外,每個(gè)虛擬鏈路vl要求一定量的帶寬β。假設(shè)虛擬鏈路使用的帶寬是對(duì)稱的,應(yīng)用要求一個(gè)最小有效值r,以及可能存在一個(gè)最大副本數(shù)δa。

s2、根據(jù)混合云環(huán)境的特點(diǎn)及應(yīng)用分配所涉及內(nèi)容定義約束條件:

s2-1、準(zhǔn)入控制:每個(gè)應(yīng)用程序分配的副本數(shù)最多不超過(guò)δ:

|d|=δ,

其中,δ為某個(gè)應(yīng)用程序的副本數(shù)量,d為某個(gè)應(yīng)用程序所有副本組成的集合;

至少有一個(gè)對(duì)應(yīng)的副本被分配時(shí),一個(gè)應(yīng)用程序才能被認(rèn)為成功分配:

其中,a表示某個(gè)應(yīng)用程序;d表示應(yīng)用程序a的副本d;a為所有應(yīng)用程序組成的集合,oa是一個(gè)變量,其定義為:如果應(yīng)用程序a被成功分配則值為1,反之為0;gd,a是一個(gè)變量,其定義為:如果應(yīng)用程序a的副本d被分配則值為1,反之為0。

s2-2、節(jié)點(diǎn)嵌入:只在副本被認(rèn)為已成功放置時(shí)才為其分配節(jié)點(diǎn)資源:

其中,s表示某個(gè)服務(wù),n表示某個(gè)實(shí)體設(shè)備pm,s為所有的服務(wù)組成的集合,n為所有的實(shí)體設(shè)備pm組成的集合,是一個(gè)變量,其定義為:如果節(jié)點(diǎn)n是應(yīng)用程序a的副本d對(duì)應(yīng)的服務(wù)s所占用的宿主則值為1,反之為0;ia,s是一個(gè)變量,其定義為:如果應(yīng)用程序a對(duì)應(yīng)的服務(wù)s被實(shí)例化則值為1,反之為0;

如果一個(gè)副本沒(méi)有成功放置則不會(huì)有實(shí)例化的服務(wù):

如果一個(gè)服務(wù)寄宿在一個(gè)節(jié)點(diǎn)上,那么cpu資源必須預(yù)先分配給該服務(wù):

其中,是一個(gè)變量,其定義為:如果實(shí)體設(shè)備pmn運(yùn)行應(yīng)用程序a對(duì)應(yīng)的服務(wù)s則值為1,反之為0,

對(duì)每個(gè)服務(wù)而言,其最多寄宿在一個(gè)節(jié)點(diǎn)上:

cpu和內(nèi)存資源的保護(hù)約束:

其中,ωs為服務(wù)s要求的cpu資源,ωn為實(shí)體設(shè)備pmn的cpu容量,且

其中,us,n是一個(gè)變量,其定義為:如果服務(wù)s托管在實(shí)體設(shè)備pmn上則值為1,反之為0,γs為服務(wù)s的存儲(chǔ)容量要求,γn為實(shí)體設(shè)備pmn的存儲(chǔ)容量;

一旦一個(gè)服務(wù)被某個(gè)副本使用,此服務(wù)必須寄宿在某個(gè)節(jié)點(diǎn)上:

在具體實(shí)施方式中,定義cpu負(fù)載系數(shù)clf,即被要求的cpu和云環(huán)境中可用的cpu之比,以評(píng)估輸入復(fù)雜性,cpu負(fù)載系數(shù)clf的值取0.1~1范圍,且步長(zhǎng)為0.1。對(duì)每個(gè)cpu負(fù)載系數(shù)clf值,創(chuàng)造100個(gè)隨機(jī)應(yīng)用例。

s2-3、鏈路嵌入:在每個(gè)節(jié)點(diǎn)上的多網(wǎng)絡(luò)流約束(mcf)可表示為:

其中,是一個(gè)變量,其定義為:如果服務(wù)s1與服務(wù)s2之間的虛擬鏈路部署在應(yīng)用程序a的副本d對(duì)應(yīng)的節(jié)點(diǎn)n1和n2之間的實(shí)體鏈路上則值為1,反之為0,e表示某個(gè)實(shí)體鏈路pl,e表示所有實(shí)體鏈路pl組成的集合;其中,

其中,是一個(gè)變量,其定義為:如果服務(wù)s1與服務(wù)s2之間的虛擬鏈路部署在應(yīng)用程序a的副本d對(duì)應(yīng)的實(shí)體鏈路e上則值為1,反之為0,是一個(gè)變量,其定義為:如果至少有一個(gè)應(yīng)用程序a的副本通過(guò)部署在其上的服務(wù)s1與服務(wù)s2之間的虛擬鏈路使用實(shí)體鏈路e則值為1,反之為0;

每個(gè)鏈路使用的總帶寬不能超過(guò)總連接能力:

其中,表示應(yīng)用程序a所對(duì)應(yīng)的兩個(gè)服務(wù)s1,s2之間的帶寬要求,be實(shí)體鏈路ple的帶寬限制。

在具體實(shí)施方式中,定義每一個(gè)包含10個(gè)應(yīng)用的應(yīng)用組至少有一個(gè)服務(wù)。每個(gè)應(yīng)用的服務(wù)都從一個(gè)由3個(gè)服務(wù)組成的服務(wù)集合中以60%的概率隨機(jī)的選擇。對(duì)每個(gè)服務(wù)s:ωs在[0.2,1]的區(qū)間隨機(jī)選擇,而γs在[0.75,1]的區(qū)間隨機(jī)選擇,其中ωs為服務(wù)s要求的cpu資源,γs為服務(wù)s的存儲(chǔ)容量要求。對(duì)每個(gè)應(yīng)用a,所有的服務(wù)都相互連接至少|(zhì)sa|-1,且最大|sa|雙向vls的帶寬在[0.02,0.04]范圍隨機(jī)選擇,其中,sa為應(yīng)用程序a占用的所有服務(wù)組成的集合。

s2-4、可靠性感知約束:對(duì)于一個(gè)可用副本,它所使用的每一個(gè)單獨(dú)組件必須是可用的,當(dāng)一個(gè)組件被任意一個(gè)副本的服務(wù)或虛擬鏈路使用時(shí)即認(rèn)為這個(gè)組件被此副本所使用:

其中,c表示某個(gè)實(shí)體組件,包括實(shí)體設(shè)備pm和實(shí)體鏈路pl,c為實(shí)體組件的集合,即c=n∪e,是一個(gè)變量,其定義為:實(shí)體組件c被應(yīng)用程序a的副本d所使用則值為1,反之為0,

單個(gè)組件的狀態(tài)描述為:

其中,χc表示實(shí)體組件c的狀態(tài),

一個(gè)組建的失敗概率:

基層網(wǎng)絡(luò)狀態(tài)可以被描述為:

x=(χ1,χ2,...,χ|c|)。

在具體實(shí)施方式中,每個(gè)應(yīng)用程序要求的最小可用性(0%,90%,99%),ga的操作者是統(tǒng)一交叉的,并且一個(gè)浮動(dòng)字符串突變概率0.05發(fā)生個(gè)體突變。每個(gè)個(gè)體只能發(fā)生一個(gè)突變。

s3、定義目標(biāo)函數(shù),將算法所要解決的問(wèn)題轉(zhuǎn)換為最大化放置的應(yīng)用數(shù)量:

如果一個(gè)對(duì)應(yīng)不同副本或應(yīng)用的服務(wù)被配置在同一個(gè)實(shí)體設(shè)備pm上,或者相同的虛擬鏈路vl被配置在一個(gè)實(shí)體鏈路pl上,它們可以重復(fù)使用資源,因此,如果服務(wù)s被同一個(gè)應(yīng)用配置到實(shí)體設(shè)備pmn上兩次,就沒(méi)有必要再次分配cpu和存儲(chǔ)資源,只有當(dāng)服務(wù)s因不同應(yīng)用而被安置時(shí)才需分配更多的cpu資源;

pmn所使用的

pmn所使用的

ple所使用的

在具體實(shí)施方式中,設(shè)定結(jié)束條件:算法將在計(jì)算到100代時(shí)或者在計(jì)算到20時(shí)代出現(xiàn)相同解決方案時(shí)停止。

s4、定義染色體,具體如下:

其中,a1,a2,...,aa,描述應(yīng)用分配的順序,其中aa表示應(yīng)用程序集合a中的第a個(gè)應(yīng)用程序,

描述如何給每個(gè)應(yīng)用和每個(gè)副本分配服務(wù)的順序,其中表示服務(wù)集合s中應(yīng)用程序|a|的副本δ|a|所對(duì)應(yīng)的第|sa|個(gè)服務(wù);

被用于選擇一個(gè)實(shí)體設(shè)備pm來(lái)運(yùn)行一個(gè)給定應(yīng)用的給定副本所對(duì)應(yīng)的服務(wù),其中表示實(shí)體設(shè)備pm集合n中運(yùn)行應(yīng)用程序|a|的副本δ|a|所對(duì)應(yīng)的第|sa|個(gè)服務(wù)的實(shí)體設(shè)備pm。

采用一個(gè)偏隨機(jī)秘鑰,相比于用布爾數(shù)組構(gòu)成染色體,一個(gè)偏隨機(jī)秘鑰染色體是一個(gè)在0到1之間取值的浮點(diǎn)數(shù)組,被用于染色體的解碼階段進(jìn)行決策;利用偏隨機(jī)秘鑰定義解碼方法,避免創(chuàng)建無(wú)效的解決方案,以優(yōu)化解空間。

s5、構(gòu)建一個(gè)分布式池模型:一個(gè)集中池包含所有的遺傳算法中的個(gè)體,任務(wù)將分布式地選擇一個(gè)隨機(jī)的個(gè)體集來(lái)進(jìn)化成新的一代。在每一代中所有的個(gè)體都被存儲(chǔ)在分布池中,每個(gè)任務(wù)可以檢查結(jié)束條件,如有必要,任務(wù)可以計(jì)算下一代。

這個(gè)集中池模型框架是基于evospace(圖2)的,但是取代原來(lái)的重新插入管理,本發(fā)明增加容錯(cuò)機(jī)制并且使用一致的數(shù)據(jù)庫(kù)(mongodb,一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù))。每個(gè)分布式的任務(wù)可以直接在數(shù)據(jù)庫(kù)中分配一存儲(chǔ)桶的個(gè)體。而其他的分布式任務(wù)不能選擇這個(gè)被分配的存儲(chǔ)桶。如果一個(gè)任務(wù)已經(jīng)完成了它的工作,便將已經(jīng)分配過(guò)的舊的存儲(chǔ)桶從數(shù)據(jù)庫(kù)移除并且插入從下一代的存儲(chǔ)桶中隨機(jī)選擇的新的個(gè)體。

s6、譯碼。用一個(gè)譯碼算法將染色體轉(zhuǎn)換成一個(gè)解空間的解。

s6-1、將應(yīng)用程序根據(jù)染色體的第一部分的值a1,a2,...,aa,進(jìn)行排序,如果要配置一個(gè)應(yīng)用,本算法從第一個(gè)副本開(kāi)始分配,如果這個(gè)副本已被分配,檢查其可用性以保證對(duì)應(yīng)的應(yīng)用程序有效性。

所述步驟s6-1中,如果可保證的可用性比此應(yīng)用要求的可用性要高,則成功地分配了這個(gè)應(yīng)用并且將嘗試分配下一個(gè)應(yīng)用。如果這個(gè)可用性保證低于應(yīng)用要求,在還有多余的應(yīng)用的副本前提下將嘗試配置一個(gè)新的副本。如果可用性保證仍然低于應(yīng)用要求并且沒(méi)有副本剩余,那這個(gè)應(yīng)用將不能被分配并且將從分配集中移除。

s6-2、按照染色體第二部分的值來(lái)確定一個(gè)給定的應(yīng)用a的給定副本δ所對(duì)應(yīng)的服務(wù)的排序。

所述步驟s6-2中,對(duì)于每個(gè)服務(wù)s,創(chuàng)建一個(gè)所有能運(yùn)行服務(wù)s的pms的表l,以使得所有約束條件有效。同時(shí)必須檢查每個(gè)pm的cpu和存儲(chǔ)容量,以及相同副本的其它服務(wù)的帶寬。只有服從于所有這些參數(shù)的pms才是列表l的元素。如果表l為空,便可以從配置集合中移除應(yīng)用a,因?yàn)闆](méi)有有效地方式來(lái)分配a。否則,如果|l|>0,算法對(duì)l中的所有pms排序并選擇在位置的pm。這個(gè)pm將作為副本δ對(duì)應(yīng)服務(wù)s的主機(jī),并且通過(guò)檢測(cè)這個(gè)pm是否可以和其它服務(wù)建立網(wǎng)絡(luò)連接分配所找到的帶寬(這時(shí)采用最短路徑算法)。如最后一步所述,一個(gè)確定性的解碼對(duì)于排序pms非常重要。pms必須有一個(gè)總的確定性的順序并且是獨(dú)立于配置資源的。本發(fā)明采用id對(duì)pms進(jìn)行排序,其簡(jiǎn)單且具有確定性的,并且使最后一步大部分時(shí)間都處在一個(gè)好的隨機(jī)順序上。

s7、判斷應(yīng)用程序放置的數(shù)量或迭代次數(shù)是否達(dá)到規(guī)定值。

s7-1、若已達(dá)到規(guī)定值,則跳到s13,算法結(jié)束得出對(duì)應(yīng)解集合。

s7-2、若未達(dá)到規(guī)定值,則執(zhí)行s8。

s8、計(jì)算個(gè)體的適應(yīng)度。

s9、復(fù)制。復(fù)制過(guò)程采用精英策略,即根據(jù)約束條件和計(jì)算的適應(yīng)度并按照一定比例選擇一部分優(yōu)秀個(gè)體復(fù)制形成下一代的子個(gè)體。精英策略能有效地確保解的質(zhì)量在進(jìn)化過(guò)程中不斷獲得提升。

s10、選擇交叉。交叉的兩個(gè)個(gè)體,一個(gè)來(lái)自精英群體,另一個(gè)以隨機(jī)方式從全部個(gè)體中產(chǎn)生。

所述步驟s10中,如圖3所示,染色體1代表精英個(gè)體,染色體2表示一般個(gè)體。設(shè)交叉概率為0.7,即子代以0.7的概率從精英父代中獲得基因,以0.3的概率從一般個(gè)體中獲得基因。以擲硬幣的方式?jīng)Q定從哪個(gè)染色體選擇基因,頭面朝上時(shí)選擇第一個(gè)染色體,否則選擇第二個(gè)染色體。模擬拋擲一枚偏斜的硬幣來(lái)產(chǎn)生隨機(jī)數(shù),該硬幣有0.7的概率頭面朝上。當(dāng)生成的隨機(jī)數(shù)小于等于0.7時(shí),從第一個(gè)染色體獲得基因;當(dāng)隨機(jī)數(shù)大于0.7時(shí),選擇第二個(gè)染色體產(chǎn)生基因。這樣產(chǎn)生的子代更接近于精英個(gè)體,可起到加速收斂的作用。

s11、變異。變異操作在下一代種群中增加更多的新個(gè)體,即按照初始解空間生成相同的分布,以隨機(jī)方式來(lái)選擇一些個(gè)體加入新一代的解空間,從而起到防止早熟的作用。

s12、返回步驟s7。

s13、結(jié)束,輸出最優(yōu)解。

上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
望江县| 金溪县| 门源| 谷城县| 乐清市| 株洲市| 宝山区| 天镇县| 甘孜县| 图木舒克市| 泾阳县| 建昌县| 岢岚县| 新巴尔虎左旗| 色达县| 稻城县| 虞城县| 灵宝市| 英德市| 英吉沙县| 民勤县| 盈江县| 宁陕县| 蚌埠市| 镇雄县| 石屏县| 平凉市| 都安| 彰武县| 黄浦区| 信丰县| 东乌珠穆沁旗| 惠来县| 容城县| 桓台县| 威宁| 奉贤区| 虎林市| 兴和县| 汶上县| 武隆县|