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

基于模糊模式識別的Docker容器云平臺下的容器調(diào)度方法與流程

文檔序號:12278847閱讀:449來源:國知局
基于模糊模式識別的Docker容器云平臺下的容器調(diào)度方法與流程
本發(fā)明涉及分布式云計算領(lǐng)域,具體涉及一種基于模糊模式識別的Docker容器云平臺下的容器調(diào)度方法。
背景技術(shù)
:容器技術(shù)可以認為是一種操作系統(tǒng)級別的虛擬化。其初衷是為了減少Hypervisor技術(shù)為代表的虛擬化技術(shù)所帶來的性能開銷,可以在更細的粒度上利用機器資源。2013年,Docker開源容器引擎將已有的容器相關(guān)技術(shù)結(jié)合起來,通過引入分層鏡像技術(shù),統(tǒng)一了應(yīng)用的打包和分發(fā)的部署方式,降低了容器使用的門檻,并推動了容器技術(shù)的商業(yè)化進程。在過去的兩年時間,基于Docker容器的解決方案在全球范圍內(nèi)快速增長,主要IT提供商和云環(huán)境提供商都已經(jīng)宣稱了基于容器化大解決方案,Docker容器技術(shù)所支持的容器技術(shù)用一個統(tǒng)一的標準,開放容器方案OCI(TheOpenContainerInitiative)已經(jīng)成為云計算領(lǐng)域的一個新的容器標準。隨著以Docker為代表的容器技術(shù)的快速發(fā)展,容器云平臺的使用的技術(shù),諸如存儲、網(wǎng)絡(luò)、彈性伸縮扥等監(jiān)控等等也變得越來越受到關(guān)注,可以認為,以Docker為底層資源粒度分配隔離的PaaS平臺可以就是這里所說的“容器云平臺”。容器云平臺的監(jiān)控和調(diào)度技術(shù)是保證整個平臺正常運行的關(guān)鍵技術(shù),平臺管理人員需要通過監(jiān)控技術(shù)了解整個平臺的運行狀況,同時這些監(jiān)控到的信息又可以為容器在平臺上的調(diào)度提供依據(jù)。然而,現(xiàn)有技術(shù)存在一下不足之處:1.缺乏對Docker容器進行分類的原則和方法:雖然運行在容器當(dāng)中的應(yīng)用對各種資源的占用量都不同,但是目前仍然沒有簡便合理的原則和方法作為Docker容器的分類標準并且進行分類。2.現(xiàn)有Docker容器調(diào)度算法,沒有充分考慮到容器的歷史運行期間的資源占用情況:現(xiàn)有調(diào)度算法都是在Docker容器第一次啟動的時候?qū)ζ溥M行調(diào)度,但是在實際生產(chǎn)環(huán)境中,經(jīng)常會出現(xiàn)已經(jīng)運行的容器被重新啟動或者擴容成多份的情況,在這個時候,容器的歷史運行期間的資源占用情況就應(yīng)該被考慮進來,這些信息最能反映容器對實際物理資源的占用情況,所以,在容器啟動的時候這些信息就應(yīng)該被搜集起來,并且在調(diào)度的時候,這些信息應(yīng)該作為容器調(diào)度的重要原則之一。技術(shù)實現(xiàn)要素:針對現(xiàn)有技術(shù)缺少有效的Docker容器分類方法,以及容器調(diào)度時候考慮因素不全面等等不足,本發(fā)明提供一種基于模糊模式識別的Docker容器云平臺中的容器調(diào)度方法,該方法主要通對運行在Docker容器云平臺上Docker容器在運行期間的資源指標進行搜集,采用模糊模式識別的方式,按照資源使用的維度對容器進行細粒度的分類。當(dāng)相同鏡像再次以容器的方式被啟動,調(diào)度器可以根據(jù)Docker容器歷史分類信息進行更精準的調(diào)度。該方法解決了Docker容器無法分類以及Docker容器調(diào)度時候不夠合理的問題。本發(fā)明解決技術(shù)問題所采用的技術(shù)方案如下:一種基于模糊模式識別的Docker容器云平臺中的容器調(diào)度方法,該方法包括以下步驟:(1)分類模型的確定:采用模糊識別的理論,確定分類算法的模型,其中具體需要確定分類模型中的論域、模糊子集以及隸屬度函數(shù)。(2)指標信息的搜集:分布式容器云平臺上,各個服務(wù)器節(jié)點上的agent組件開始初始化每個服務(wù)器節(jié)點上已運行Docker容器的類別記錄矩陣,并且開始搜集當(dāng)前服務(wù)器節(jié)點上所有運行著的所有Docker容器的數(shù)據(jù)指標以及當(dāng)前服務(wù)器節(jié)點本身的可用資源指標,最后將以上信息以心跳信息的形式上傳到數(shù)據(jù)庫中。(3)對Docker容器進行分類:當(dāng)容器被容器云平臺調(diào)度時,調(diào)度器的調(diào)度算法從數(shù)據(jù)庫中讀取步驟(2)中該Docker容器對應(yīng)的數(shù)據(jù)指標,將數(shù)據(jù)指標作為步驟(1)中已建立好的分類模型的輸入,分類模型采用模糊綜合評判的方式對該Docker容器進行類別計算,最后得到該Docker容器在步驟(1)中確定好的不同論域上的分類向量。(4)對Docker容器進行調(diào)度:如果該容器沒有在調(diào)度器中未被注冊過,則隨機返回服務(wù)器列表中的一個服務(wù)器節(jié)點的身份信息,算法結(jié)束;如果該容器已經(jīng)在調(diào)度器中被注冊過,將步驟(3)中已經(jīng)分好類的Docker容器的分類向量和集群中所有服務(wù)器節(jié)點的身份信息輸入調(diào)度器的調(diào)度算法中,調(diào)度算法將對所有輸入的服務(wù)器節(jié)點身份信息進行遍歷,每次遍歷到一個節(jié)點,就會從數(shù)據(jù)庫中取出對應(yīng)的節(jié)點類別記錄矩陣,假設(shè)將該Docker容器會被調(diào)度到當(dāng)前遍歷的服務(wù)器節(jié)點上,計算并記錄該Docker容器被調(diào)度到服務(wù)器節(jié)點上之后,節(jié)點類別記錄矩陣的離散情況;在之后遍歷的過程中,對每個服務(wù)器節(jié)點進行同樣的操作;遍歷結(jié)束之后,比較所有服務(wù)器節(jié)點的類別記錄矩陣的離散情況,返回離散情況最小的一個服務(wù)器節(jié)點,完成容器調(diào)度。進一步地,所述步驟1具體為:(1.1)根據(jù)模糊識別的理論,確定分類算法的論域CPU、MEM、BLKIO、NET_IN和NET_OUT,這幾個論域分別代表服務(wù)器節(jié)點的CPU,內(nèi)存,磁盤IO,網(wǎng)絡(luò)IO核心資源;其中,CPU=[0,100]表示單位統(tǒng)計時間內(nèi),該容器的用戶態(tài)CPU時間與系統(tǒng)態(tài)CPU時間占總CPU時間的百分比;MEM=[0,100]表示單位統(tǒng)計時間內(nèi),該容器所占的常駐內(nèi)存的大小占系統(tǒng)總的物理內(nèi)存的百分比;BLKIO=[0,100]表示單位統(tǒng)計時間內(nèi),該容器內(nèi)所有進程等待blkio的時間所占統(tǒng)計時間的百分比;NET_IN=[0,100]表示單位統(tǒng)計時間內(nèi),容器網(wǎng)卡接受比特速率超過指定的最低下載閾值的時間,占總的統(tǒng)計時間的百分比;NET_OUT=[0,100]表示單位統(tǒng)計時間內(nèi),容器網(wǎng)卡發(fā)送的比特速率超過指定的最低上傳閾值的時間,占總的統(tǒng)計時間的百分比;對于以上的每個論域,根據(jù)對每種資源的使用程度,又可以分出三個模糊子集,即S=“偏小”,M=“中等”,L=“偏大”;(1.2)根據(jù)步驟(1.1)獲得的每個論域的模糊子集,確定每個模糊子集的隸屬度函數(shù),隸屬度函數(shù)采用正態(tài)分布函數(shù)來表示,每個模糊子集的隸屬度函數(shù)構(gòu)成分類模型。進一步地,所述步驟2具體為:(2.1)當(dāng)前服務(wù)器節(jié)點的已運行Docker容器的類別記錄矩陣的含義由步驟(1.2)中的分類模型確定,其中,類別記錄矩陣中行的含義由上到下表示的是偏大、中等、偏小,三個模糊子集;類別記錄矩陣中列的含義由左到右表示的是CPU、MEM、BLKIO、NET_IN、NET_OUT幾種不同論域,每個元素的含義為當(dāng)前服務(wù)器節(jié)點上,對應(yīng)論域下類別為對應(yīng)的模糊子集的Docker容器的數(shù)目。(2.2)將Docker容器的原始數(shù)據(jù)指標和服務(wù)器節(jié)點的資源指標以心跳信息的形式上傳到數(shù)據(jù)庫中。4.根據(jù)權(quán)利要求3所述的容器云平臺中的應(yīng)用分類和調(diào)度的方法,其特征在于,所述步驟3具體為:(3.1)當(dāng)Docker容器被容器云平臺調(diào)度時,如果該容器沒有在調(diào)度器中被注冊過,則直接跳過步驟(3),如果已經(jīng)在調(diào)度器中注冊過,可以從數(shù)據(jù)庫中查詢到該Docker容器原始數(shù)據(jù)指標,對這些原始數(shù)據(jù)指標進行再次計算,可以得到用于分類的5維數(shù)據(jù)指標:每個指標的具體含義為:Vcpu為單位時間內(nèi)當(dāng)前Docker容器中所有進程的cpu總時間所占總時間的百分比;Vmem為單位時間內(nèi)當(dāng)前Docker容器中所有進程所占服務(wù)器節(jié)點總內(nèi)存的百分比;Vblkio為單位時間內(nèi)當(dāng)前Docker容器中所有進程由于進行讀寫操作所花費的時間所占總時間的百分比;Vnetin為單位時間內(nèi)當(dāng)前Docker容器所使用的網(wǎng)卡所接收的數(shù)據(jù)流量超過指定閾值的時間占總時間的百分比;Vnetout為單位時間內(nèi)當(dāng)前Docker容器所使用的網(wǎng)卡所發(fā)送數(shù)據(jù)流量超過指定閾值的時間占總時間的百分比;(3.2)將步驟(3.1)中得到的5維度數(shù)據(jù)指標輸入到步驟(1.2)中獲得的每個模糊子集的隸屬度函數(shù),計算得到該容器的模糊矩陣,使用最大隸屬度原則對模糊矩陣進行計算,可以得到該容器的分類向量:TYPE=(Acpu,Amem,Ablkio,Anetin,Anetout),向量中的每一個元素從左到右分別是Docker容器在論域為CPU、MEM、BLKIO、NET_IN、NET_OUT下的具體類型值,具體的取值可以是偏小、中等或偏大。進一步地,所述步驟4具體為:(4.1)如果該容器在調(diào)度器中未被注冊過,則隨機返回服務(wù)器列表中的一個服務(wù)器節(jié)點的身份信息,算法結(jié)束;如果該容器已經(jīng)在調(diào)度器中被注冊過,則遍歷服務(wù)器列表中的服務(wù)器,對于遍歷到的每個服務(wù)器的身份信息,根據(jù)該身份信息從數(shù)據(jù)庫中取出對應(yīng)服務(wù)器節(jié)點的類別記錄矩陣;對步驟(3.2)中得到的待調(diào)度Docker容器的分類向量進行遍歷,如果遍歷到分類向量中的當(dāng)前元素的具體類型值為T,記當(dāng)前元素所屬的論域為A(A為CPU、MEM、BLKIO、NET_IN或NET_OUT),則在服務(wù)器節(jié)點的類別記錄矩陣中,論域為A并且類別為T的位置上,對應(yīng)的數(shù)值加1。(4.2)計算步驟(4.1)得到的類別記錄矩陣中,每一個論域下,三個不同類別的Docker容器數(shù)值的方差,對5列中每一列的數(shù)據(jù)都做同樣的操作,將5個方差值疊加,得到該服務(wù)器節(jié)點的總方差值。(4.3)重復(fù)步驟(4.2),計算得到服務(wù)器節(jié)點列表中每一個服務(wù)器節(jié)點的總方差值,之后對這些總方差值按照從小到大的方式進行排序,在數(shù)據(jù)庫中更新排在最前面的服務(wù)器節(jié)點在數(shù)據(jù)庫中的類別記錄矩陣,最后返回這個服務(wù)器節(jié)點的身份信息,從而完成了調(diào)度。本發(fā)明的有益效果是:本發(fā)明首次提出了采用模糊模式識別的方式,根據(jù)容器運行時的資源指標進行分類的算法,可以清楚的根據(jù)容器運行時候的資源占用狀況將Docker容器分成不同的類別,還可以為相同容器再次部署的時候提供調(diào)度依據(jù)。在容器云平臺中,運行著相同應(yīng)用的容器進行擴容操作是經(jīng)常發(fā)生的,基于容器分類信息的調(diào)度算法很好的考慮了Docker容器在運行階段對服務(wù)器cpu,內(nèi)存,磁盤IO,網(wǎng)絡(luò)IO等資源的使用情況,可以根據(jù)容器對資源的占用程度,將運行期間資源占用較少,中等,以及較高的容器調(diào)度到均衡分布在宿主機上,可以使得集群中的服務(wù)器資源得到更到充分利用。附圖說明圖1是本發(fā)明方法整體架構(gòu)圖;圖2是整個調(diào)度算法的算法流程圖;具體實施方式本發(fā)明的核心是利用模糊模式識別,根據(jù)容器運行期間所使用的資源狀況,對Docker容器進行分類,并且根據(jù)這些分類數(shù)據(jù),提出了基于模糊模式識別的容器調(diào)度方法,該方法可以從資源占用的角度為Docker容器的調(diào)度提供依據(jù),使得Docker容器被調(diào)度之后,服務(wù)器節(jié)點上的各種核心資源可以保持比較均衡的狀態(tài)。該方法主要分為如下四個主要步驟:分類模型的確定、指標信息的搜集、對Docker容器進行分類、對Docker容器進行調(diào)度。1.分類模型的確定:采用模糊識別的理論,確定分類算法的模型,其中具體需要確定分類模型中的論域,模糊子集以及隸屬度函數(shù)。(1.1)確定每個模糊子集的論域:對于每個容器而言,可以確定以下論域:CPU=[0,100]表示單位統(tǒng)計時間內(nèi),該容器的用戶態(tài)CPU時間與系統(tǒng)態(tài)CPU時間占總CPU時間的百分比。MEM=[0,100]表示單位統(tǒng)計時間內(nèi),該容器所占的常駐內(nèi)存的大小占系統(tǒng)總的物理內(nèi)存的百分比。BLKIO=[0,100]表示單位統(tǒng)計時間內(nèi),該容器內(nèi)所有進程等待blkio的時間所占統(tǒng)計時間的百分比。NET_IN[0,100]表示單位統(tǒng)計時間內(nèi),容器網(wǎng)卡接受比特速率超過指定的最低下載閾值的時間,占總的統(tǒng)計時間的百分比。NET_OUT[0,100]表示單位統(tǒng)計時間內(nèi),容器網(wǎng)卡發(fā)送的比特速率超過指定的最低上傳閾值的時間,占總的統(tǒng)計時間的百分比。(1.2)確定每個論域上的模糊子集以及隸屬度函數(shù):對于以上的每個論域,又可以根據(jù)實際情況劃分出三個模糊子集,即S=“偏小”,M=“中等”,L=“偏大”,這里選用正態(tài)分布來描不同模糊子集的隸屬度函數(shù):偏小型模糊子集:中等型模糊子集:偏大型模糊子:不同論域的模型中σ以及a的取值有所區(qū)別,根據(jù)服務(wù)器節(jié)點性能的不同而有所區(qū)別,在Ubuntu14.042核cpu4G內(nèi)存的服務(wù)器節(jié)點上,模型中的參數(shù)采用以下的取值::表2不同論域模型的參數(shù)取值2.指標信息的搜集:分布式容器云平臺上,各個服務(wù)器節(jié)點上的agent組件開始搜集每個服務(wù)器節(jié)點上的運行著的所有Docker容器的數(shù)據(jù)指標,當(dāng)前服務(wù)器節(jié)點本身的可用資源指標,以及當(dāng)前服務(wù)器節(jié)點上已運行Docker容器的類別記錄矩陣,類別記錄矩陣中的具體記錄由步驟1中的論域模型確定,最后將以上信息以心跳信息的形式上傳到數(shù)據(jù)庫中。因為生產(chǎn)環(huán)境中的服務(wù)器多以Linux操作系統(tǒng)為主,所以是這里的指標搜集主要是針對Linux系統(tǒng)而言的,這里采用的服務(wù)器節(jié)點的操作系統(tǒng)為Ubuntu14.04。(2.1)初始化該服務(wù)器節(jié)點的Docker容器的記錄矩陣:當(dāng)前服務(wù)器節(jié)點的已運行Docker容器的記錄矩陣的含義由(1.2)中的分類模型確定,其中的行的含義由上到下表示的是偏大,中等,偏小,三個模糊子集,列的含義由左到右表示的是CPU、MEM、BLKIO、NET_IN、NET_OUT幾種不同論域,每個元素的含義為當(dāng)前服務(wù)器節(jié)點上,對應(yīng)論域下類別為對應(yīng)的模糊子集的Docker容器的數(shù)目,初始的時候,矩陣中的所有元素均為0,矩陣初始化完畢后,將這個矩陣存儲在數(shù)據(jù)庫中,存儲的時候使用服務(wù)器節(jié)點的身份信息作為這個矩陣的標記。具體的Docker容器記錄矩陣表示如下:表3Docker容器記錄矩陣CPUMEMBLKNETINNETOUT偏小型(S)Ncpu1Nmem1Nblkio1Nnetin1Nnetout1中等型(M)Ncpu2Nmem2Nblkio2Nnetin2Nnetout2偏大型(L)Ncpu3Nmem3Nblkio3Nnetin3Nnetout3(2.2)確定Docker容器的數(shù)據(jù)指標以及服務(wù)器節(jié)可用資源指標:表4Docker容器的原始數(shù)據(jù)指標當(dāng)前服務(wù)器節(jié)點的資源指標為:表5服務(wù)器節(jié)點的資源指標(2.3)agent節(jié)點開始從服務(wù)器節(jié)點上搜集以上確定好的指標:在(2.2)中給出了docker.cpu.user,docker.cpu.sys,這兩個指標的具體含義,它們的獲取來源為cgroups文件系統(tǒng)目錄中對應(yīng)的cpuacct子系統(tǒng)分級下,docker目錄所對應(yīng)的容器的cpuacct.stat文件。cpuacct.stat文件中包含了這個子結(jié)構(gòu)下所使用的cpu總時間。比如計算docker.cpu.user,在每次獲取一個新的時間之后,需要用當(dāng)前獲取的時間減去上次記錄的時間,這個差值就是在一個interval時間內(nèi),當(dāng)前cgroup層級所使用的usertime,這個時間的單位是USER_HZ,之后可以通過/sys/fs/cgroups/cpuacct/cpuacct.stat得到cgroups文件系統(tǒng)中,總的cpuusertime,之后可以按照以下方式得到百分比:在(2.2)中給出了docker.memory.declare,docker.memory.used這兩個指標的具體含義,它們的信息的獲取來源為cgroups文件系統(tǒng)中,memory子系統(tǒng)分級下,docker目錄下所對應(yīng)的容器的memory.limit_in_bytes以及memory.usage_in_bytes文件。它們的單位均為byte,表示的是cgroups文件系統(tǒng)對某個容器在運行時候的內(nèi)存資源使用的限制,以及當(dāng)前容器中所有的進程所使用的實際內(nèi)存大小。從內(nèi)核實現(xiàn)的角度來看,為了提升效率,這里memory.usage_in_bytes文件中提供的數(shù)據(jù)僅僅是一個近似值,并不是準確的內(nèi)存使量,如果希望進行更精準的統(tǒng)計,可以使用memory.stat文件中的RSS+CACHE(+SWAP)來表示當(dāng)前實際使用的內(nèi)存資源。在(2.2)中給出了docker.net.rxps以及docker.net.txps這兩個指標的具體含義,它們的采用通過以下的方式得到:在宿主機上的/proc/<pid>/net/dev文件中可以查看到當(dāng)前進程所在的networknamespace中的所有的網(wǎng)絡(luò)設(shè)備的信息。首先利用dockerengine提供的api(或者通過cgroups文件目錄層級的tasks文件),可以通過容器的id查詢到容器中第一個啟動的進程在宿主機上的pid,之后可以根據(jù)這個pid查到對應(yīng)進程所在的networknamespace下,網(wǎng)絡(luò)設(shè)備到目前為止下載和上傳的byte數(shù)目。之后可以根據(jù)已經(jīng)得到的rx_bytes和tx_bytes計算出上傳和下載的速率,比如要計算某個容器的網(wǎng)設(shè)備的rxps,可以按照以下公式進行,按照類似的方式也可以計算出docker.net.txps:在(2.2)中給出了docker.net.rxduration以及docker.net.wxduration這兩個指標的具體含義,這兩個指標在對容器進行分類的時候會使用到,主要是衡量在單位時間內(nèi),容器有多長時間是在進行上傳和下載的操作。這兩個指標可以描述單位一段時間之內(nèi),容器進行網(wǎng)絡(luò)IO的頻繁程度。計算的時候需要通過采樣的方式來進行,具體的閾值和采樣點參數(shù)需要提前指定好,默認閾值thresh是100KB/s,采樣間隔sinterval是1s/次,如果在某一個采樣時間點上,該容器的rxps大于指定的閾值,那么對應(yīng)的采用時間間隔就認為是頻繁進行下載操作的時間,對應(yīng)的時間就被統(tǒng)計到,計算公式如下,其中docker.net.rxps為單位時間內(nèi)該網(wǎng)卡下載的比特數(shù):通常情況下,容器以及容器內(nèi)部的進程相關(guān)的絕大部分信息都可以從操作系統(tǒng)的/proc、/sys目錄直接獲取到。但是出于效率的考慮,在這些文件系統(tǒng)中僅僅只容器或者進程的部分信息,對于一些特殊的信息,我們需要直接從內(nèi)核中表示進程的結(jié)構(gòu)體task_struct中獲得指定的信息。在(2.2)中給出了給出了docker.diskio.delay的具體含義,在具體計算的時候,需要使用以下公式:machine.mem.use表示服務(wù)器節(jié)點上可以使用的物理內(nèi)存的總量,可以從服務(wù)器的/proc/meminfo文件中獲取。指定每次進行指標數(shù)據(jù)采樣的時間間隔為1分鐘,即每隔離1分鐘,就將以上搜集好的指標上傳到數(shù)據(jù)庫中。3.對Docker容器進行分類:當(dāng)容器被容器云平臺調(diào)度時,調(diào)度器從數(shù)據(jù)庫中讀取步驟2中該Docker容器對應(yīng)的數(shù)據(jù)指標,將數(shù)據(jù)指標作為步驟1中已建立好的分類模型的輸入,分類模型采用模糊綜合評判的方式對該Docker容器進行類別計算,最后得到該Docker容器在步驟1中確定好的不同論域上的分類向量。(3.1)當(dāng)Docker容器被容器云平臺調(diào)度時,如果該容器沒有在調(diào)度器中被注冊過,則直接跳過第3步,如果已經(jīng)在調(diào)度器中注冊過,可以從數(shù)據(jù)庫中查詢到該Docker容器原始數(shù)據(jù)指標,對這些原始數(shù)據(jù)指標進行再次計算,可以得到用于分類的5維數(shù)據(jù)指標:每個指標的具體含義為:表6為數(shù)據(jù)指標含義以上5維指標在實際計算時需要基于2.3中確定好的原始指標,按照如下的方式進行計算:Vcpu=docker.cpu.user+docker.cpu.sysVblkio=docker.diskio.delayVnetin=docker.net.rxdurationVnetout=docker.net.txduration(3.2)將(3.1)中得到的5維度數(shù)據(jù)指標輸入到步驟(1.2)中獲得的每個模糊子集的隸屬度函數(shù),計算得到該容器的模糊矩陣,模糊矩陣用表格方式表示如下:表7模糊矩陣表格CPUMEMBLKNETINNETOUT偏小型(S)Vcpu1Vmem1Vblkio1Vnetin1Vnetout1中等型(M)Vcpu2Vmem2Vblkio2Vnetin2Vnetout2偏大型(L)Vcpu3Vmem3Vblkio3Vnetin3Vnetout3(3.3)使用最大隸屬度原則對模糊矩陣進行計算,即對(3.2)中的模糊矩陣表格按照如下方式進行計算:Vtype=Vcpu1∨Vcpu2∨Vcpu3如果Vtype=Vcpu則在論域CPU上,該容器的模糊子集為偏小型S。如果Vtype=Vcpu則在論域CPU上,該容器的模糊子集為中等型M。如果Vtype=Vcpu3則在論域CPU上,該容器的模糊子集為偏大型L。其他的每一列也按照同樣的方式進行計算,最后可以得到該容器的分類向量:TYPE=(Acpu,Amem,Ablkio,Anetin,Anetout)。4.對Docker容器進行調(diào)度:如果該容器沒有在調(diào)度器中未被注冊過,則隨機返回服務(wù)器列表中的一個服務(wù)器節(jié)點的身份信息,算法結(jié)束;如果該容器已經(jīng)在調(diào)度器中被注冊過,將步驟(3)中已經(jīng)分好類的Docker容器的分類向量和集群中所有服務(wù)器節(jié)點的身份信息輸入調(diào)度器的調(diào)度算法中,調(diào)度算法將對所有輸入的服務(wù)器節(jié)點身份信息進行遍歷,每次遍歷到一個節(jié)點,就會從數(shù)據(jù)庫中取出對應(yīng)的節(jié)點類別記錄矩陣,假設(shè)將該Docker容器會被調(diào)度到當(dāng)前遍歷的服務(wù)器節(jié)點上,計算并記錄該Docker容器被調(diào)度到服務(wù)器節(jié)點上之后,節(jié)點類別記錄矩陣的離散情況。在之后遍歷的過程中,對每個服務(wù)器節(jié)點進行同樣的操作。遍歷結(jié)束之后,比較所有服務(wù)器節(jié)點的類別記錄矩陣的離散情況,返回離散情況最小的一個服務(wù)器節(jié)點,完成容器調(diào)度。(4.1)如過該容器沒有在調(diào)度器中未被注冊過,則隨機返回服務(wù)器列表中的一個服務(wù)器節(jié)點的身份信息,算法結(jié)束。如果該容器已經(jīng)在調(diào)度器中被注冊過,則遍歷服務(wù)器列表中的服務(wù)器,對于遍歷到的每個服務(wù)器的身份信息,根據(jù)該身份信息從數(shù)據(jù)庫中取出(2.1)中所初始化完成的對應(yīng)服務(wù)器節(jié)點的類別記錄矩陣。對(3.3)中得到的待調(diào)度Docker容器的分類向量進行遍歷,如果遍歷到分類向量中的當(dāng)前元素的具體類型值為T,記當(dāng)前元素所屬的論域為A(A為CPU、MEM、BLKIO、NET_IN或NET_OUT),則在服務(wù)器節(jié)點的類別記錄矩陣中,論域為A并且類別為T的位置上,對應(yīng)的數(shù)值加1。(4.2)計算(4.1)中得到類別記錄矩陣中,每一個論域下,三個不同類別的Docker容器數(shù)值的方差,比如對于論域CPU來說,計算方式如下:對類別記錄矩陣5列中每一列的數(shù)據(jù)都做同樣的操作,可以分別得到Scpu,Smem,Sblk,Snetin,Snetout,將這5個方差值疊加,得到該服務(wù)器節(jié)點Docker容器記錄矩陣的總方差。(4.3)按照(4.2)中描述的計算方法,計算出服務(wù)器節(jié)點列表中每一個服務(wù)器節(jié)點的總方差值,之后對服務(wù)器節(jié)點的所有總方差值按照從小到大的方式進行排序。(4.4)找到排在最前面的服務(wù)器節(jié)點的身份信息,在數(shù)據(jù)庫中更新排在最前面的服務(wù)器節(jié)點在數(shù)據(jù)庫中的類別記錄矩陣,返回這個服務(wù)器節(jié)點的身份信息,算法結(jié)束。當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
庆安县| 左权县| 贵定县| 灵丘县| 崇信县| 山东省| 迭部县| 射阳县| 新河县| 昌宁县| 桦川县| 长兴县| 鹤庆县| 玉林市| 于都县| 股票| 岑溪市| 鄂伦春自治旗| 玉林市| 利辛县| 大安市| 浦北县| 和硕县| 灵石县| 沽源县| 溧水县| 韶关市| 曲周县| 新宁县| 云梦县| 淳安县| 台山市| 吉安市| 化德县| 石泉县| 阆中市| 五指山市| 博客| 平定县| 辽阳市| 大连市|