基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng)及方法
【專利摘要】本發(fā)明是基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng),其特征在于:所述的系統(tǒng)包括服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器這幾個裝置,屬于互聯(lián)網(wǎng)云計(jì)算方面的技術(shù)領(lǐng)域。目的是提供一種通過為系統(tǒng)配置多維度的參數(shù),并設(shè)計(jì)與這些參數(shù)數(shù)據(jù)結(jié)構(gòu)相對應(yīng)的條件匹配算法,公開一種微服務(wù)的動態(tài)部署、管理方法和系統(tǒng),讓云計(jì)算微服務(wù)在多維度的條件下進(jìn)行精細(xì)匹配,確保每個服務(wù)在目標(biāo)服務(wù)區(qū)域、并發(fā)能力要求以及運(yùn)行時環(huán)境方面的限制因素都得到最優(yōu)的匹配,使得服務(wù)配置達(dá)到API級別的粒度,使得計(jì)算資源得到更加充分的使用,在平臺層(PaaS)優(yōu)化計(jì)算資源的動態(tài)分配能力。
【專利說明】
基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng)及方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及一種微服務(wù)動態(tài)部署的系統(tǒng)及方法,特別是基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng)及方法。
【背景技術(shù)】
[0002]云計(jì)算(CloudComputing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通過互聯(lián)網(wǎng)來提供動態(tài)易擴(kuò)展且虛擬化的計(jì)算資源、存儲資源或其他服務(wù)資源。云計(jì)算(Cloud Computing)是分布式計(jì)算(Distributed Computing)、并行計(jì)算(ParallelComput i ng )、效用計(jì)算(Ut i I i ty Comput ing )、網(wǎng)絡(luò)存儲(Ne twork StorageTechnologies)、虛擬化(Virtualizat1n)、負(fù)載均衡(LoadBalance)、熱備份冗余(HighAvailable)等傳統(tǒng)計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物。
[0003]云計(jì)算作為一種服務(wù),是按使用量付費(fèi)的模式,這種模式提供可用的、便捷的、按需的網(wǎng)絡(luò)訪問,進(jìn)入可配置的計(jì)算資源共享池(資源包括網(wǎng)絡(luò),服務(wù)器,存儲,應(yīng)用軟件,月艮務(wù)),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務(wù)供應(yīng)商進(jìn)行很少的交互。
[0004]云計(jì)算是通過使計(jì)算分布在大量的分布式計(jì)算機(jī)上,而非本地計(jì)算機(jī)或遠(yuǎn)程服務(wù)器中,企業(yè)數(shù)據(jù)中心的運(yùn)行將與互聯(lián)網(wǎng)更相似。這使得企業(yè)能夠?qū)①Y源切換到需要的應(yīng)用上,根據(jù)需求訪問計(jì)算機(jī)和存儲系統(tǒng)。
[0005]云計(jì)算有如下特點(diǎn):
[0006](I)超大規(guī)模
[0007]“云”具有相當(dāng)?shù)囊?guī)模,Google云計(jì)算已經(jīng)擁有100多萬臺服務(wù)器,Amazon、IBM、微軟、Yahoo等的“云”均擁有幾十萬臺服務(wù)器。企業(yè)私有云一般擁有數(shù)百上千臺服務(wù)器?!霸啤蹦苜x予用戶前所未有的計(jì)算能力。
[0008](2)虛擬化
[0009]云計(jì)算支持用戶在任意位置、使用各種終端獲取應(yīng)用服務(wù)。所請求的資源來自“云”,而不是固定的有形的實(shí)體。應(yīng)用在“云”中某處運(yùn)行,但實(shí)際上用戶無需了解、也不用擔(dān)心應(yīng)用運(yùn)行的具體位置。只需要一臺筆記本或者一個手機(jī),就可以通過網(wǎng)絡(luò)服務(wù)來實(shí)現(xiàn)我們需要的一切,甚至包括超級計(jì)算這樣的任務(wù)。
[0010](3)高可靠性
[0011]“云”使用了數(shù)據(jù)多副本容錯、計(jì)算節(jié)點(diǎn)同構(gòu)可互換等措施來保障服務(wù)的高可靠性,使用云計(jì)算比使用本地計(jì)算機(jī)可靠。
[0012](4)通用性
[0013]云計(jì)算不針對特定的應(yīng)用,在“云”的支撐下可以構(gòu)造出千變?nèi)f化的應(yīng)用,同一個“云”可以同時支撐不同的應(yīng)用運(yùn)行。
[0014](5)高可擴(kuò)展性
[0015]“云”的規(guī)??梢詣討B(tài)伸縮,滿足應(yīng)用和用戶規(guī)模增長的需要。[ΟΟ??] (6)按需服務(wù)
[0017]“云”是一個龐大的資源池,你按需購買;云可以像自來水,電,煤氣那樣計(jì)費(fèi)。
[0018]⑴低成本
[0019]由于“云”的特殊容錯措施可以采用極其廉價的節(jié)點(diǎn)來構(gòu)成云,“云”的自動化集中式管理使大量企業(yè)無需負(fù)擔(dān)日益高昂的數(shù)據(jù)中心管理成本,“云”的通用性使資源的利用率較之傳統(tǒng)系統(tǒng)大幅提升,因此用戶可以充分享受“云”的低成本優(yōu)勢,經(jīng)常只要花費(fèi)幾百美元、幾天時間就能完成以前需要數(shù)萬美元、數(shù)月時間才能完成的任務(wù)。
【發(fā)明內(nèi)容】
[0020]本發(fā)明的目的是在于解決現(xiàn)有的云服務(wù)操作性復(fù)雜和響應(yīng)能力差等問題。而提供基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng)及方法。
[0021]本發(fā)明為了實(shí)現(xiàn)上述目的而采用的技術(shù)方案為:基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng),其特征在于:所述的系統(tǒng)包括服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器,所述的服務(wù)管理Portal面向服務(wù)的開發(fā)者/提供者,為開發(fā)者/提供者提供服務(wù)部署、操作界面和服務(wù)管理的相關(guān)工具,所述的工具包括服務(wù)創(chuàng)建、月艮務(wù)修改、服務(wù)刪除、服務(wù)停用和服務(wù)統(tǒng)計(jì);所述的系統(tǒng)管理Portal為系統(tǒng)管理員提供管理門戶,存儲系統(tǒng)管理信息和系統(tǒng)配置信息,所述系統(tǒng)管理Portal的功能包括添加服務(wù)器、修改服務(wù)器、刪除服務(wù)器、服務(wù)器網(wǎng)絡(luò)配置、服務(wù)器域名配置和服務(wù)器分配記錄;所述的服務(wù)部署調(diào)度裝置是負(fù)責(zé)所有微服務(wù)的部署調(diào)度、部署策略計(jì)算和部署實(shí)施;所述的服務(wù)程序管理裝置是一個文件存儲系統(tǒng),存儲所有由服務(wù)開發(fā)者/提供者提交到系統(tǒng)的微服務(wù)程序文件,并管理所有的文件版本,所存儲和管理的程序文件包括源代碼或編譯過的程序文件,服務(wù)容器為運(yùn)行微服務(wù)程序的運(yùn)行時環(huán)境,包括運(yùn)行了某種計(jì)算機(jī)語言運(yùn)行時環(huán)境的虛擬機(jī)、物理機(jī)或其他云主機(jī);所述的服務(wù)容器是微服務(wù)的運(yùn)行環(huán)境,微服務(wù)通過其對外提供服務(wù)接口、服務(wù)的相關(guān)功能以及服務(wù)的響應(yīng)能力,所以每臺服務(wù)容器都具有對外的網(wǎng)絡(luò)地址,使得服務(wù)使用者(應(yīng)用程序或終端)能夠通過互聯(lián)網(wǎng)訪問服務(wù)。
[0022]進(jìn)一步的,所述的服務(wù)管理Portal和系統(tǒng)管理Portal根據(jù)系統(tǒng)是否要求或允許服務(wù)開發(fā)者/提供者和系統(tǒng)管理者能夠通過外部網(wǎng)絡(luò)進(jìn)行相關(guān)管理和配置,選擇性地配有對外的網(wǎng)絡(luò)地址。
[0023]進(jìn)一步的,所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器設(shè)于同一個局域網(wǎng)。
[0024]進(jìn)一步的,所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器設(shè)于不同的局域網(wǎng)內(nèi),當(dāng)服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器設(shè)于不同的局域網(wǎng)內(nèi)時,服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器相互之間能夠通過網(wǎng)絡(luò)相互聯(lián)通和彼此訪問。
[0025]進(jìn)一步的,所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器相互之間的交互方式包括REST AP1.ffeb Service和RPC。
[0026]采用上述任一項(xiàng)所述基于云計(jì)算的微服務(wù)動態(tài)部署系統(tǒng)的方法,所述的方法包括:
[0027]1)、系統(tǒng)管理員通過系統(tǒng)管理Portal配置每臺服務(wù)容器的信息,包括:服務(wù)器的IP地址、DNS域名、內(nèi)存總量、網(wǎng)絡(luò)出口帶寬、所處區(qū)域(或服務(wù)區(qū)域)、支持的運(yùn)行時環(huán)境、支持的服務(wù)接口通信協(xié)議(如TCP/HTTP/HTTPS/Websocket/CoAP等)和可支持的訪問并發(fā)量;
[0028]2)、當(dāng)服務(wù)開發(fā)者/提供者訪問服務(wù)管理Portal,服務(wù)管理Portal通過系統(tǒng)接口 B從系統(tǒng)管理Portal獲取服務(wù)容器的配置信息,并將相關(guān)信息呈現(xiàn)給服務(wù)管理Portal的使用者,便于服務(wù)開發(fā)者/提供者選擇服務(wù)容器創(chuàng)建的相關(guān)參數(shù),這些參數(shù)包括:可用的服務(wù)容器運(yùn)行時環(huán)境、服務(wù)容器的區(qū)域、可用的服務(wù)容器內(nèi)存和可用的服務(wù)容器并發(fā)量;
[0029]3)、微服務(wù)提供者通過服務(wù)管理Portal創(chuàng)建一個服務(wù)容器實(shí)例(虛擬的服務(wù)容器),創(chuàng)建微服務(wù)容器實(shí)例時,需要指定如下信息,包括:容器實(shí)例名稱、目標(biāo)服務(wù)區(qū)域、運(yùn)行時環(huán)境類型、服務(wù)接口通信協(xié)議和訪問并發(fā)量;
[0030]4)、當(dāng)微服務(wù)提供者通過服務(wù)管理Portal提交了創(chuàng)建服務(wù)容器實(shí)例的配置參數(shù)后,服務(wù)管理Portal通過系統(tǒng)A接口將相關(guān)參數(shù)提交給服務(wù)部署調(diào)度裝置,服務(wù)部署調(diào)度裝置根據(jù)服務(wù)部署條件匹配算法為該服務(wù)容器實(shí)例選擇一臺或多臺服務(wù)容器,并將選中的服務(wù)容器的空間(這里是一個虛擬的概念,一個空間由一組服務(wù)資源參數(shù)決定,包括但不限于:內(nèi)存使用量、網(wǎng)絡(luò)帶寬使用量、支持的訪問并發(fā)量等)分配給對應(yīng)的服務(wù)容器實(shí)例,為該服務(wù)容器實(shí)例生成一個唯一標(biāo)識CID,同時將為其分配的空間信息、對應(yīng)的服務(wù)容器的信息(包括:DNS域名、服務(wù)區(qū)域等)與CID關(guān)聯(lián)并寫入數(shù)據(jù)庫;
[0031]5)、服務(wù)部署調(diào)度裝置將創(chuàng)建服務(wù)容器實(shí)例的信息通過A接口返回給服務(wù)管理Portal,服務(wù)管理Portal將服務(wù)容器實(shí)例的相關(guān)信息寫入數(shù)據(jù)庫,并將服務(wù)容器實(shí)例的相關(guān)信息呈現(xiàn)給使用者,呈現(xiàn)的方式包括但不限于HTML頁面和運(yùn)行在任何計(jì)算機(jī)或移動終端的客戶端軟件,所呈現(xiàn)的信息包括:容器實(shí)例名稱、運(yùn)行時環(huán)境類型、容器版本、容器能力、容器支持的通信協(xié)議和創(chuàng)建時間等;
[0032]6)、微服務(wù)開發(fā)者/提供者通過服務(wù)管理Portal界面選擇某個已經(jīng)創(chuàng)建的服務(wù)容器實(shí)例,并向其提交(添加)一個微服務(wù)應(yīng)用程序,用戶提交微服務(wù)應(yīng)用程序后,服務(wù)管理Portal通過調(diào)用系統(tǒng)接口 C讓用戶將微服務(wù)應(yīng)用程序上傳至服務(wù)程序管理裝置,服務(wù)管理Portal再通過系統(tǒng)A接口將微服務(wù)應(yīng)用程序的相關(guān)信息提交給服務(wù)部署調(diào)度裝置,信息包括服務(wù)應(yīng)用程序在服務(wù)程序管理裝置中存儲位置、訪問路徑和該微服務(wù)對應(yīng)的服務(wù)容器實(shí)例;
[0033]7)、服務(wù)部署調(diào)度裝置根據(jù)服務(wù)管理Portal提交的服務(wù)應(yīng)用程序信息通過系統(tǒng)E接口獲取服務(wù)應(yīng)用程序并通過F接口提交給服務(wù)容器實(shí)例對應(yīng)的服務(wù)容器裝置里,并由服務(wù)容器的運(yùn)行時環(huán)境啟動運(yùn)行。服務(wù)部署調(diào)度裝置為該微服務(wù)生成一個唯一標(biāo)識AID,并連同微服務(wù)的相關(guān)信息和它在服務(wù)容器中運(yùn)行的訪問路徑一起寫入數(shù)據(jù)庫;
[0034]8)、服務(wù)部署調(diào)度裝置將微服務(wù)在容器中運(yùn)行的的訪問路徑和其它相關(guān)信息返回給服務(wù)管理Portal,包括:微服務(wù)的標(biāo)識AID和服務(wù)配置參數(shù),服務(wù)管理Portal將微服務(wù)的相關(guān)信息存入數(shù)據(jù)庫,并呈現(xiàn)給服務(wù)管理Portal的使用者,呈現(xiàn)方式包括HTML頁面和運(yùn)行在各種計(jì)算或移動設(shè)備終端的應(yīng)用程序界面;
[0035]9)、微服務(wù)使用客戶端或應(yīng)用程序根據(jù)在服務(wù)管理Portal呈現(xiàn)的微服務(wù)的訪問路徑,和服務(wù)接口定義的通信協(xié)議訪問微服務(wù),并使用其提供的服務(wù)能力;由于一個微服務(wù)根據(jù)其在部署時所要求的響應(yīng)能力,被部署在一個或多個具有相同DNS域名的服務(wù)容器上,所以當(dāng)多個服務(wù)使用客戶端訪問服務(wù)時,訪問的路徑被分配到一臺相同的服務(wù)容器上或不同的服務(wù)容器上,實(shí)現(xiàn)服務(wù)的負(fù)載均衡與服務(wù)的高可用性。
[0036]進(jìn)一步的,每臺服務(wù)容器設(shè)有對應(yīng)一條配置信息記錄,配置信息包括:服務(wù)容器的中央處理器能力(如CPU型號和核數(shù))、內(nèi)存容量、網(wǎng)絡(luò)帶寬、訪問并發(fā)量、運(yùn)行時環(huán)境、服務(wù)區(qū)域、服務(wù)接口協(xié)議和DNS域名,所述的運(yùn)行時環(huán)境為一個整數(shù),為所支持的每種運(yùn)行時環(huán)境類型值的二進(jìn)制或值,每種運(yùn)行時環(huán)境對應(yīng)的計(jì)算機(jī)語言或類型由一個二進(jìn)制數(shù)表示,其二進(jìn)制數(shù)的位數(shù)根據(jù)系統(tǒng)所支持的運(yùn)行時環(huán)境種類數(shù)而定;所述服務(wù)區(qū)域?yàn)橐粋€整數(shù),為所服務(wù)區(qū)域表示值的二進(jìn)制或值,每個服務(wù)區(qū)域由一個二進(jìn)制數(shù)表示,其二進(jìn)制數(shù)的位數(shù)根據(jù)系統(tǒng)所支持的服務(wù)區(qū)域數(shù)而定;所述服務(wù)接口協(xié)議為一個整數(shù),為所支持的所有通信協(xié)議的表示值的二進(jìn)制或值,每種通信協(xié)議由一個二進(jìn)制數(shù)表示,其二進(jìn)制數(shù)的位數(shù)根據(jù)系統(tǒng)所支持的總的通信協(xié)議數(shù)而定。
[0037]更進(jìn)一步的,所述的每臺服務(wù)容器至少分配一個DNS訪問域名,其中一臺或多臺服務(wù)容器具有相同的域名,所述的域名參數(shù)包括:一個前綴、容器所支持的運(yùn)行時環(huán)境標(biāo)識、容器姐妹數(shù)(即具有相同域名的容器數(shù))、該容器所支持的服務(wù)區(qū)域標(biāo)識、一個序號和域名后綴,所述的前綴為任意字符串;所述的容器姐妹數(shù)為具有相同域名的容器數(shù)量N,若一個微服務(wù)程序被部署到該容器,則同樣的應(yīng)用程序也會被部署到其他N-1臺姐妹容器上;所述的序號為同類容器的一個序列標(biāo)識,表示具有多組同類容器,同類容器指它們具有相同的運(yùn)行時環(huán)境,相同的容器姐妹數(shù),相同的服務(wù)區(qū)域;所述的域名前綴、容器所支持的運(yùn)行時環(huán)境標(biāo)識、容器姐妹數(shù)、容器所支持的服務(wù)區(qū)域標(biāo)識和序號一起連成的字符串對應(yīng)一個二級域名或其他級子域名,作為該容器的標(biāo)識;所述的域名后綴為一級域名(如dasudian.com)或包含了子域名的全域名字符串。
[0038]進(jìn)一步的,所述的服務(wù)部署條件匹配算法如下:
[0039]a)、服務(wù)管理Portal將用戶欲創(chuàng)建的容器實(shí)例的配置參數(shù)提交給服務(wù)部署調(diào)度裝置,參數(shù)包括:目標(biāo)服務(wù)區(qū)域、容器運(yùn)行時環(huán)境、通信協(xié)議、要求的內(nèi)存量和要求訪問并發(fā)量;
[0040]b)、服務(wù)部署調(diào)度裝置查詢系統(tǒng)配置中的通信協(xié)議與域名對應(yīng)表,將在第a步中獲得的容器實(shí)例要求的通信協(xié)議與該對應(yīng)表中的協(xié)議標(biāo)識進(jìn)行二進(jìn)制與運(yùn)算,若與運(yùn)算結(jié)果為I,則將對應(yīng)的域名放入備選;若與運(yùn)算結(jié)果為O,則將忽略掉對應(yīng)的域名;通過匹配得到一個備選DNS列表LI。
[0041]C)、將在第a步中獲得的容器實(shí)例要求的運(yùn)行時環(huán)境與域名備選列表LI里的每個域名的運(yùn)行時環(huán)境標(biāo)識做二進(jìn)制與運(yùn)算,若與運(yùn)算結(jié)果為I,則將對應(yīng)的域名放入備選列表L2;若與運(yùn)算結(jié)果為O,則將忽略掉對應(yīng)的域名,通過匹配后得到一個備選DNS域名列表L2;
[0042]d)、將在第a步中獲得的容器實(shí)例要求的目標(biāo)服務(wù)區(qū)域與域名備選列表L2中的每個域名的服務(wù)區(qū)域標(biāo)識做二進(jìn)制與運(yùn)算,將每個域名對應(yīng)的與運(yùn)算結(jié)果按從大到小的順序排序,得到備選域名列表L3;
[0043]e)、從備選域名列表L3中選出第一個域名(在第d步中獲得與運(yùn)算值結(jié)果最大者),并查詢可用服務(wù)容器表(可用服務(wù)容器表信息包括:容器標(biāo)識符ID、容器可用內(nèi)存量、可分配的訪問并發(fā)量和對應(yīng)的DNS域名),若能查詢到與所選出的域名對應(yīng)的服務(wù)容器SC (SC可能為一臺容器,或?yàn)槎嗯_姐妹容器),則進(jìn)入第f步,否則按順序從域名列表L3中選出下一條域名,并重復(fù)第e步;
[0044]f )、根據(jù)在第e步中選出的域名所對應(yīng)的容器姐妹數(shù),做以下兩種情況的處理:f-a)、容器姐妹數(shù)為I,則比較在第a步中獲得的容器實(shí)例要求的內(nèi)存量或最大訪問并發(fā)量,定義為要求能力值CH具體選用那個能力參數(shù)做匹配由具體的系統(tǒng)實(shí)現(xiàn)而定),與在第e步中獲得的容器SC的可用內(nèi)存量或可用訪問并發(fā)量,定義為可用能力值Ca作比較,若前者Cr小于后者Ca,則該容器SC被選中為所創(chuàng)建的容器實(shí)例提供服務(wù)空間,并同時將后者值減去前者值得到一個剩余的可用內(nèi)存量或剩余的可用訪問并發(fā)量,稱為剩余可用能力值Ct,并更新可用服務(wù)容器表;若前者Cr大于后者Ca,則重復(fù)第e步,選出新的服務(wù)容器SC;
[0045]f-b)、容器姐妹數(shù)為η>1,則將第a步中獲得的容器實(shí)例要求的內(nèi)存量或最大訪問并發(fā)量,定義為要求能力值Cr,除以η,商Cn,余Cm,比較Cn值與在第e步中獲得的容器SC中某臺姐妹容器的可用內(nèi)存量或可用訪問并發(fā)量,定義為可用能力值Ca,若前者Cn小于后者Ca,則將Cn分配給SC中的每臺姐妹容器承擔(dān),并將Cm分成能力單元隨機(jī)分配給其中的Cm臺姐妹容器承擔(dān),將每臺姐妹容器的可用能力值Ca減去其所承擔(dān)的能力總值得到剩余的可用能力值Ct,并更新可用服務(wù)容器表;若前者Cn大于后者Ca,,則重復(fù)第e步,選出新的服務(wù)容器SC;
[0046]g)、在第f步中,若某服務(wù)容器SC(包括多臺姐妹容器的情況)被選中為所創(chuàng)建的容器實(shí)例提供服務(wù)空間,并將原可用能力值Ca減去被分配掉的Cr之后得到的剩余可用能力值Ct小于某個閾值CO,則將該容器SC從可用容器表中刪除,并將其信息記錄到不可用容器表,不可用容器表包含的信息包括容器在系統(tǒng)中的唯一標(biāo)識ID和容器對應(yīng)的域名。
[0047]采用上述技術(shù)方案的有益效果是:本發(fā)明通過為系統(tǒng)配置多維度的參數(shù),并設(shè)計(jì)與這些參數(shù)數(shù)據(jù)結(jié)構(gòu)相對應(yīng)的條件匹配算法,公開一種微服務(wù)的動態(tài)部署、管理方法和系統(tǒng),讓云計(jì)算微服務(wù)在多維度的條件下進(jìn)行精細(xì)匹配,確保每個服務(wù)在目標(biāo)服務(wù)區(qū)域、并發(fā)能力要求以及運(yùn)行時環(huán)境方面的限制因素都得到最優(yōu)的匹配,使得服務(wù)配置達(dá)到API級別的粒度,使得計(jì)算資源得到更加充分的使用,在平臺層(PaaS)優(yōu)化計(jì)算資源的動態(tài)分配能力。本發(fā)明所涉及服務(wù)部署方法所涉及配置項(xiàng)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和算法,優(yōu)化部署過程中的計(jì)算復(fù)雜度,使得在大規(guī)模集群下的服務(wù)部署和管理更加快速和簡單;本發(fā)明獨(dú)立于計(jì)算資源基礎(chǔ)架構(gòu),適用于物理機(jī)環(huán)境、虛擬機(jī)環(huán)境或公有云主機(jī)環(huán)境,通過與云計(jì)算的基礎(chǔ)架構(gòu)層配合,實(shí)現(xiàn)更加靈活、高精度、高效的服務(wù)資源配置。
【附圖說明】
[0048]圖1為本發(fā)明所述的整體系統(tǒng)框圖;
[0049]圖2為本發(fā)明所涉動態(tài)微服務(wù)部署系統(tǒng)所創(chuàng)建的一個服務(wù)容器實(shí)例的顯示界面樣例;
[0050]圖3為本發(fā)明所涉的微服務(wù)部署流程和微服務(wù)程序提交過程示意圖;
[0051 ]圖4為本發(fā)明中所述的微服務(wù)被訪問的路徑示意圖;
[0052]圖5為本發(fā)明所涉及的服務(wù)容器配置參數(shù)表的示意圖;
[0053]圖6為本發(fā)明所涉及的服務(wù)容器的域名結(jié)構(gòu)的示意圖;
[0054]圖7為系統(tǒng)所支持的通信協(xié)議與域名的對應(yīng)表示意圖;
[0055]圖8為示例:創(chuàng)建的容器實(shí)例要求支持的協(xié)議標(biāo)識與某臺/組容器支持的協(xié)議標(biāo)識作二進(jìn)制與操作,結(jié)果為I的示意圖;
[0056]圖9為示例:創(chuàng)建的容器實(shí)例要求支持的協(xié)議標(biāo)識與某臺/組容器支持的協(xié)議標(biāo)識作二進(jìn)制與操作,結(jié)果為O的示意圖;
[0057]圖10為示例:創(chuàng)建的容器實(shí)例要求支持的運(yùn)行時環(huán)境標(biāo)識與某臺/組容器支持的運(yùn)行時環(huán)境標(biāo)識作二進(jìn)制與操作,結(jié)果為I的示意圖;
[0058]圖11為示例:創(chuàng)建的容器實(shí)例要求支持的運(yùn)行時環(huán)境標(biāo)識與某臺/組容器支持的運(yùn)行時環(huán)境標(biāo)識作二進(jìn)制與操作,結(jié)果為O的示意圖;
[0059]圖12為示例:創(chuàng)建的容器實(shí)例要求支持的服務(wù)區(qū)域標(biāo)識與某臺/組容器支持的服務(wù)區(qū)域標(biāo)識作二進(jìn)制與操作,結(jié)果值為將按從大到小的順序?qū)?yīng)的DNS域名進(jìn)行排序的示意圖;
[0060]圖13為本發(fā)明所涉及系統(tǒng)的可用容器信息表,表信息包括但不限于:可用容器ID、可用的內(nèi)存量、可用并發(fā)量、容器對應(yīng)的域名等的示意圖;
[0061]圖14為本發(fā)明所涉及系統(tǒng)的不可用容器信息表,表信息包括但不限于:不可用容器ID、容器對應(yīng)的域名的示意圖。
【具體實(shí)施方式】
[0062]以下結(jié)合附圖和本發(fā)明優(yōu)選的具體實(shí)施例對本發(fā)明的內(nèi)容作進(jìn)一步地說明。所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0063]如圖1至圖14中所示,本方案中所述的基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng),所述的系統(tǒng)包括服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器,所述的服務(wù)管理Portal面向服務(wù)的開發(fā)者/提供者,為開發(fā)者/提供者提供服務(wù)部署、操作界面和服務(wù)管理的相關(guān)工具,所述的工具包括服務(wù)創(chuàng)建、服務(wù)修改、服務(wù)刪除、服務(wù)停用和服務(wù)統(tǒng)計(jì);所述的系統(tǒng)管理Portal為系統(tǒng)管理員提供管理門戶,存儲系統(tǒng)管理信息和系統(tǒng)配置信息,所述系統(tǒng)管理Portal的功能包括添加服務(wù)器、修改服務(wù)器、刪除服務(wù)器、服務(wù)器網(wǎng)絡(luò)配置、服務(wù)器域名配置和服務(wù)器分配記錄;所述的服務(wù)部署調(diào)度裝置是負(fù)責(zé)所有微服務(wù)的部署調(diào)度、部署策略計(jì)算和部署實(shí)施;所述的服務(wù)程序管理裝置是一個文件存儲系統(tǒng),存儲所有由服務(wù)開發(fā)者/提供者提交到系統(tǒng)的微服務(wù)程序文件,并管理所有的文件版本,所存儲和管理的程序文件包括源代碼或編譯過的程序文件,服務(wù)容器為運(yùn)行微服務(wù)程序的運(yùn)行時環(huán)境,包括運(yùn)行了某種計(jì)算機(jī)語言運(yùn)行時環(huán)境的虛擬機(jī)、物理機(jī)或其他云主機(jī);所述的服務(wù)容器是微服務(wù)的運(yùn)行環(huán)境,微服務(wù)通過其對外提供服務(wù)接口、服務(wù)的相關(guān)功能以及服務(wù)的響應(yīng)能力,所以每臺服務(wù)容器都具有對外的網(wǎng)絡(luò)地址,使得服務(wù)使用者(應(yīng)用程序或終端)能夠通過互聯(lián)網(wǎng)訪問服務(wù),在本方案中所述的服務(wù)管理Portal和系統(tǒng)管理Portal根據(jù)系統(tǒng)是否要求或允許服務(wù)開發(fā)者/提供者和系統(tǒng)管理者能夠通過外部網(wǎng)絡(luò)進(jìn)行相關(guān)管理和配置,選擇性地配有對外的網(wǎng)絡(luò)地址;在本方案中所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器設(shè)于同一個局域網(wǎng),當(dāng)然也可以是設(shè)在不同的局域網(wǎng)內(nèi),但是當(dāng)所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器是設(shè)在不同的局域網(wǎng)內(nèi)時,所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器相互之間能夠通過網(wǎng)絡(luò)相互聯(lián)通和彼此訪問即可;而在本方案中所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器采用的是設(shè)于同一個局域網(wǎng)內(nèi);在本方案中所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器相互之間的交互方式包括REST API,Web Service和RPC。
[0064]在本方案中,采用上述中所述基于云計(jì)算的微服務(wù)動態(tài)部署系統(tǒng)的方法,所述的方法包括:
[0065]1)、系統(tǒng)管理員通過系統(tǒng)管理Portal配置每臺服務(wù)容器的信息,包括:服務(wù)器的IP地址、DNS域名、內(nèi)存總量、網(wǎng)絡(luò)出口帶寬、所處區(qū)域(或服務(wù)區(qū)域)、支持的運(yùn)行時環(huán)境、支持的服務(wù)接口通信協(xié)議(如TCP/HTTP/HTTPS/Websocket/CoAP等)和可支持的訪問并發(fā)量;
[0066]2)、當(dāng)服務(wù)開發(fā)者/提供者訪問服務(wù)管理Portal,服務(wù)管理Portal通過系統(tǒng)接口 B從系統(tǒng)管理Portal獲取服務(wù)容器的配置信息,并將相關(guān)信息呈現(xiàn)給服務(wù)管理Portal的使用者,便于服務(wù)開發(fā)者/提供者選擇服務(wù)容器創(chuàng)建的相關(guān)參數(shù),這些參數(shù)包括:可用的服務(wù)容器運(yùn)行時環(huán)境、服務(wù)容器的區(qū)域、可用的服務(wù)容器內(nèi)存和可用的服務(wù)容器并發(fā)量;
[0067]3)、微服務(wù)提供者通過服務(wù)管理Portal創(chuàng)建一個服務(wù)容器實(shí)例(虛擬的服務(wù)容器),創(chuàng)建微服務(wù)容器實(shí)例時,需要指定如下信息,包括:容器實(shí)例名稱、目標(biāo)服務(wù)區(qū)域、運(yùn)行時環(huán)境類型、服務(wù)接口通信協(xié)議和訪問并發(fā)量;
[0068]4)、當(dāng)微服務(wù)提供者通過服務(wù)管理Portal提交了創(chuàng)建服務(wù)容器實(shí)例的配置參數(shù)后,服務(wù)管理Portal通過系統(tǒng)A接口(見圖1)將相關(guān)參數(shù)提交給服務(wù)部署調(diào)度裝置,服務(wù)部署調(diào)度裝置根據(jù)服務(wù)部署條件匹配算法為該服務(wù)容器實(shí)例選擇一臺或多臺服務(wù)容器,并將選中的服務(wù)容器的空間(這里是一個虛擬的概念,一個空間由一組服務(wù)資源參數(shù)決定,包括但不限于:內(nèi)存使用量、網(wǎng)絡(luò)帶寬使用量、支持的訪問并發(fā)量等)分配給對應(yīng)的服務(wù)容器實(shí)例,為該服務(wù)容器實(shí)例生成一個唯一標(biāo)識CID,同時將為其分配的空間信息、對應(yīng)的服務(wù)容器的信息(包括:DNS域名、服務(wù)區(qū)域等)與CID關(guān)聯(lián)并寫入數(shù)據(jù)庫;
[0069]5)、服務(wù)部署調(diào)度裝置將創(chuàng)建服務(wù)容器實(shí)例的信息通過A接口返回給服務(wù)管理Portal,服務(wù)管理Portal將服務(wù)容器實(shí)例的相關(guān)信息寫入數(shù)據(jù)庫,并將服務(wù)容器實(shí)例的相關(guān)信息呈現(xiàn)給使用者,呈現(xiàn)的方式包括但不限于HTML頁面和運(yùn)行在任何計(jì)算機(jī)或移動終端的客戶端軟件,所呈現(xiàn)的信息包括:容器實(shí)例名稱、運(yùn)行時環(huán)境類型、容器版本、容器能力、容器支持的通信協(xié)議和創(chuàng)建時間等(如圖2);
[0070]6)、微服務(wù)開發(fā)者/提供者通過服務(wù)管理Portal界面選擇某個已經(jīng)創(chuàng)建的服務(wù)容器實(shí)例(如圖2),并向其提交(添加)一個微服務(wù)應(yīng)用程序,用戶提交微服務(wù)應(yīng)用程序后,月艮務(wù)管理Portal通過調(diào)用系統(tǒng)接口 C讓用戶將微服務(wù)應(yīng)用程序上傳至服務(wù)程序管理裝置(如圖3),服務(wù)管理Portal再通過系統(tǒng)A接口將微服務(wù)應(yīng)用程序的相關(guān)信息提交給服務(wù)部署調(diào)度裝置,信息包括服務(wù)應(yīng)用程序在服務(wù)程序管理裝置中存儲位置、訪問路徑和該微服務(wù)對應(yīng)的服務(wù)容器實(shí)例;
[0071]7)、服務(wù)部署調(diào)度裝置根據(jù)服務(wù)管理Portal提交的服務(wù)應(yīng)用程序信息通過系統(tǒng)E接口獲取服務(wù)應(yīng)用程序并通過F接口提交給服務(wù)容器實(shí)例對應(yīng)的服務(wù)容器裝置里(如圖3),并由服務(wù)容器的運(yùn)行時環(huán)境啟動運(yùn)行。服務(wù)部署調(diào)度裝置為該微服務(wù)生成一個唯一標(biāo)識AID,并連同微服務(wù)的相關(guān)信息和它在服務(wù)容器中運(yùn)行的訪問路徑一起寫入數(shù)據(jù)庫;
[0072]8)、服務(wù)部署調(diào)度裝置將微服務(wù)在容器中運(yùn)行的的訪問路徑和其它相關(guān)信息返回給服務(wù)管理Portal,包括:微服務(wù)的標(biāo)識AID和服務(wù)配置參數(shù),服務(wù)管理Portal將微服務(wù)的相關(guān)信息存入數(shù)據(jù)庫,并呈現(xiàn)給服務(wù)管理Portal的使用者,呈現(xiàn)方式包括HTML頁面和運(yùn)行在各種計(jì)算或移動設(shè)備終端的應(yīng)用程序界面;
[0073]9)、微服務(wù)使用客戶端或應(yīng)用程序根據(jù)在服務(wù)管理Portal呈現(xiàn)的微服務(wù)的訪問路徑,和服務(wù)接口定義的通信協(xié)議訪問微服務(wù),并使用其提供的服務(wù)能力;由于一個微服務(wù)根據(jù)其在部署時所要求的響應(yīng)能力,被部署在一個或多個具有相同DNS域名的服務(wù)容器上,所以當(dāng)多個服務(wù)使用客戶端訪問服務(wù)時,訪問的路徑被分配到一臺相同的服務(wù)容器上或不同的服務(wù)容器上,實(shí)現(xiàn)服務(wù)的負(fù)載均衡與服務(wù)的高可用性如圖4所示。
[0074]在本方案中,每臺服務(wù)容器都對應(yīng)一條配置信息記錄,如圖5所示,配置信息包括:服務(wù)容器的中央處理器能力(如CPU型號,核數(shù)等)、可用的內(nèi)存容量、可用的網(wǎng)絡(luò)帶寬、可用的訪問并發(fā)量、支持的運(yùn)行時環(huán)境、服務(wù)區(qū)域、支持的服務(wù)接口協(xié)議和DNS域名等。其中支持的運(yùn)行時環(huán)境為一個整數(shù),為所支持的每種運(yùn)行時環(huán)境類型值的二進(jìn)制或值(如圖5),在本發(fā)明所涉及的系統(tǒng)內(nèi),每種運(yùn)行時環(huán)境對應(yīng)的計(jì)算機(jī)語言或類型由一個二進(jìn)制數(shù)表示,其二進(jìn)制數(shù)的位數(shù)根據(jù)系統(tǒng)所支持的運(yùn)行時環(huán)境種類數(shù)而定,比如,如果系統(tǒng)總共支持8種運(yùn)行時環(huán)境,則每個運(yùn)行時環(huán)境由一個8位(一個字節(jié))的二進(jìn)制數(shù)值表示,如00000001(整數(shù)I)代表Java,00000010(整數(shù)2)代表C語言,00000100(整數(shù)4)代表PHP等,具體的某個值代表某種運(yùn)行時環(huán)境,本發(fā)明不作限制,可以在具體的系統(tǒng)實(shí)現(xiàn)中定義。
[0075]同樣,每臺服務(wù)容器的服務(wù)區(qū)域也為一個整數(shù),為所服務(wù)區(qū)域表示值的二進(jìn)制或值(如圖5),在本發(fā)明所涉及的系統(tǒng)內(nèi),每個服務(wù)區(qū)域由一個二進(jìn)制數(shù)表示,其二進(jìn)制數(shù)的位數(shù)根據(jù)系統(tǒng)所支持的服務(wù)區(qū)域數(shù)而定,比如,如果系統(tǒng)總共支持8個服務(wù)區(qū)域,則每個服務(wù)區(qū)域由一個8位(一個字節(jié))的二進(jìn)制數(shù)值表示,如00000001 (整數(shù)I)代表華南區(qū),00000010(整數(shù)2)代表華中區(qū),00000100(整數(shù)4)代表華北區(qū)等,具體的某個值代表某個服務(wù)區(qū)域,本發(fā)明不作限制,可以在具體的系統(tǒng)實(shí)現(xiàn)中定義。
[0076]同樣,每臺服務(wù)容器支持的通信協(xié)議也為一個整數(shù),為所支持的所有通信協(xié)議的表示值的二進(jìn)制或值(如圖5),在本發(fā)明所涉及的系統(tǒng)內(nèi),每種通信協(xié)議由一個二進(jìn)制數(shù)表示,其二進(jìn)制數(shù)的位數(shù)根據(jù)系統(tǒng)所支持的總的通信協(xié)議數(shù)而定,比如,如果系統(tǒng)總共支持4個服務(wù)區(qū)域,則每個服務(wù)區(qū)域由一個4位(半個字節(jié))的二進(jìn)制數(shù)值表示,如0001(整數(shù)I)代表HTTP ,0010(整數(shù)2)代表HTTPS ,0100(整數(shù)4)代表Websocket等,具體的某個值代表某種通信協(xié)議,本發(fā)明不作限制,可以在具體的系統(tǒng)實(shí)現(xiàn)中定義。
[0077]本發(fā)明所涉及的服務(wù)容器配置,每臺服務(wù)容器必須被分配一個DNS訪問域名,且可以一臺或多臺容器具有相同的域名,每個域名由如下參數(shù)決定:一個前綴、容器所支持的運(yùn)行時環(huán)境標(biāo)識、容器姐妹數(shù)(即具有相同域名的容器數(shù))、該容器所支持的服務(wù)區(qū)域標(biāo)識、一個序號和域名后綴,如圖6所示。其中,前綴為任意字符串,具體的系統(tǒng)實(shí)現(xiàn)時,可以定義為一個有意義的字符串;容器姐妹數(shù)為具有相同域名的容器數(shù)量N,若一個微服務(wù)程序被部署到該容器,則同樣的應(yīng)用程序也會被部署到其他N-1臺姐妹容器上,則當(dāng)微服務(wù)使用客戶端訪問該微服務(wù)時,其訪問路徑可以到達(dá)任何一臺姐妹容器,以實(shí)現(xiàn)微服務(wù)的負(fù)載均衡和高可用性。序號為同類容器的一個序列標(biāo)識,表示具有多組同類容器,同類容器指它們具有相同的運(yùn)行時環(huán)境,相同的容器姐妹數(shù),相同的服務(wù)區(qū)域。域名前綴與容器所支持的運(yùn)行時環(huán)境標(biāo)識、容器姐妹數(shù)、容器所支持的服務(wù)區(qū)域標(biāo)識、序號一起連成的字符串對應(yīng)一個二級域名或其他級子域名,作為該容器的標(biāo)識。域名后綴為一級域名(如dasudian.com)或包含了子域名的全域名字符串,一個完整的容器域名不例為:“dac3261.paas.dasudian.com”。
[0078]具體的說在本方案中,所述的服務(wù)部署條件匹配算法如下:
[0079]a)、服務(wù)管理Portal將用戶欲創(chuàng)建的容器實(shí)例的配置參數(shù)提交給服務(wù)部署調(diào)度裝置,參數(shù)包括:目標(biāo)服務(wù)區(qū)域、容器運(yùn)行時環(huán)境、通信協(xié)議、要求的內(nèi)存量和要求訪問并發(fā)量;
[0080]b)、服務(wù)部署調(diào)度裝置查詢系統(tǒng)配置中的通信協(xié)議與域名對應(yīng)表(如圖7),將在第
7-1步中獲得的容器實(shí)例要求的通信協(xié)議與該對應(yīng)表中的協(xié)議標(biāo)識進(jìn)行二進(jìn)制與運(yùn)算,如圖8所示,若與運(yùn)算結(jié)果為1(如圖8),則將對應(yīng)的域名放入備選;若與運(yùn)算結(jié)果為0(圖9),則將忽略掉對應(yīng)的域名;通過匹配得到一個備選DNS列表LI。
[0081]C)、將在第a步中獲得的容器實(shí)例要求的運(yùn)行時環(huán)境與域名備選列表LI里的每個域名的運(yùn)行時環(huán)境標(biāo)識做二進(jìn)制與運(yùn)算,若與運(yùn)算結(jié)果為1(如圖10),則將對應(yīng)的域名放入備選列表L2;若與運(yùn)算結(jié)果為O (如圖11),則將忽略掉對應(yīng)的域名,通過匹配后得到一個備選DSN域名列表L2;
[0082]d)、將在第a步中獲得的容器實(shí)例要求的目標(biāo)服務(wù)區(qū)域與域名備選列表L2中的每個域名的服務(wù)區(qū)域標(biāo)識做二進(jìn)制與運(yùn)算,如圖12所示,將每個域名對應(yīng)的與運(yùn)算結(jié)果按從大到小的順序排序,得到備選域名列表L3;
[0083]e)、從備選域名列表L3中選出第一個域名(如圖13所示,在第d步中獲得與運(yùn)算值結(jié)果最大者),并查詢可用服務(wù)容器表(可用服務(wù)容器表信息包括:容器標(biāo)識符ID、容器可用內(nèi)存量、可分配的訪問并發(fā)量和對應(yīng)的DNS域名),若能查詢到與所選出的域名對應(yīng)的服務(wù)容器SC(SC可能為一臺容器,或?yàn)槎嗯_姐妹容器),則進(jìn)入第f步,否則按順序從域名列表L3中選出下一條域名,并重復(fù)第e步;
[0084]f)、根據(jù)在第e步中選出的域名所對應(yīng)的容器姐妹數(shù),做以下兩種情況的處理:
[0085]f-a)、容器姐妹數(shù)為I,則比較在第a步中獲得的容器實(shí)例要求的內(nèi)存量或最大訪問并發(fā)量,定義為要求能力值Cr(具體選用那個能力參數(shù)做匹配由具體的系統(tǒng)實(shí)現(xiàn)而定),與在第e步中獲得的容器SC的可用內(nèi)存量或可用訪問并發(fā)量,定義為可用能力值Ca作比較,若前者Cr小于后者Ca,則該容器SC被選中為所創(chuàng)建的容器實(shí)例提供服務(wù)空間,并同時將后者值減去前者值得到一個剩余的可用內(nèi)存量或剩余的可用訪問并發(fā)量,稱為剩余可用能力值Ct,并更新可用服務(wù)容器表(圖13);若前者Cr大于后者Ca,則重復(fù)第e步,選出新的服務(wù)容器SC;
[0086]f-b)、容器姐妹數(shù)為η>1,則將第a步中獲得的容器實(shí)例要求的內(nèi)存量或最大訪問并發(fā)量,定義為要求能力值Cr,除以η,商Cn,余Cm,比較Cn值與在第e步中獲得的容器SC中某臺姐妹容器的可用內(nèi)存量或可用訪問并發(fā)量,定義為可用能力值Ca,若前者Cn小于后者Ca,則將Cn分配給SC中的每臺姐妹容器承擔(dān),并將Cm分成能力單元隨機(jī)分配給其中的Cm臺姐妹容器承擔(dān),將每臺姐妹容器的可用能力值Ca減去其所承擔(dān)的能力總值得到剩余的可用能力值Ct,并更新可用服務(wù)容器表(圖13);若前者Cn大于后者Ca,,則重復(fù)第e步,選出新的服務(wù)容器SC;
[0087]g)、在第f步中,若某服務(wù)容器SC(包括多臺姐妹容器的情況)被選中為所創(chuàng)建的容器實(shí)例提供服務(wù)空間,并將原可用能力值Ca減去被分配掉的Cr之后得到的剩余可用能力值Ct小于某個閾值CO,則將該容器SC從可用容器表(圖13)中刪除,并將其信息記錄到不可用容器表(圖14),不可用容器表包含的信息包括容器在系統(tǒng)中的唯一標(biāo)識ID和容器對應(yīng)的域名。
[0088]以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng),其特征在于:所述的系統(tǒng)包括服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器, 所述的服務(wù)管理Portal面向服務(wù)的開發(fā)者/提供者,為開發(fā)者/提供者提供服務(wù)部署、操作界面和服務(wù)管理的相關(guān)工具,所述的工具包括服務(wù)創(chuàng)建、服務(wù)修改、服務(wù)刪除、服務(wù)停用和服務(wù)統(tǒng)計(jì); 所述的系統(tǒng)管理Portal為系統(tǒng)管理員提供管理門戶,存儲系統(tǒng)管理信息和系統(tǒng)配置信息,所述系統(tǒng)管理Portal的功能包括添加服務(wù)器、修改服務(wù)器、刪除服務(wù)器、服務(wù)器網(wǎng)絡(luò)配置、服務(wù)器域名配置和服務(wù)器分配記錄; 所述的服務(wù)部署調(diào)度裝置是負(fù)責(zé)所有微服務(wù)的部署調(diào)度、部署策略計(jì)算和部署實(shí)施; 所述的服務(wù)程序管理裝置是一個文件存儲系統(tǒng),存儲所有由服務(wù)開發(fā)者/提供者提交到系統(tǒng)的微服務(wù)程序文件,并管理所有的文件版本,所存儲和管理的程序文件包括源代碼或編譯過的程序文件,服務(wù)容器為運(yùn)行微服務(wù)程序的運(yùn)行時環(huán)境,包括運(yùn)行了某種計(jì)算機(jī)語言運(yùn)行時環(huán)境的虛擬機(jī)、物理機(jī)或其他云主機(jī); 所述的服務(wù)容器是微服務(wù)的運(yùn)行環(huán)境,微服務(wù)通過其對外提供服務(wù)接口、服務(wù)的相關(guān)功能以及服務(wù)的響應(yīng)能力,所以每臺服務(wù)容器都具有對外的網(wǎng)絡(luò)地址,使得服務(wù)使用者(應(yīng)用程序或終端)能夠通過互聯(lián)網(wǎng)訪問服務(wù)。2.根據(jù)權(quán)利要求1所述的基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng),其特征在于:所述的服務(wù)管理Portal和系統(tǒng)管理Portal根據(jù)系統(tǒng)是否要求或允許服務(wù)開發(fā)者/提供者和系統(tǒng)管理者能夠通過外部網(wǎng)絡(luò)進(jìn)行相關(guān)管理和配置,選擇性地配有對外的網(wǎng)絡(luò)地址。3.根據(jù)權(quán)利要求1所述的基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng),其特征在于:所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器設(shè)于同一個局域網(wǎng)。4.根據(jù)權(quán)利要求1所述的基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng),其特征在于:所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器設(shè)于不同的局域網(wǎng)內(nèi),當(dāng)服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器設(shè)于不同的局域網(wǎng)內(nèi)時,服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器相互之間能夠通過網(wǎng)絡(luò)相互聯(lián)通和彼此訪問。5.根據(jù)權(quán)利要求1所述的基于云計(jì)算的微服務(wù)動態(tài)部署的系統(tǒng),其特征在于:所述的服務(wù)管理Portal、系統(tǒng)管理Portal、服務(wù)部署調(diào)度裝置、服務(wù)程序管理裝置和服務(wù)容器相互之間的交互方式包括REST APKffeb Service和RPC。6.采用如權(quán)利要求1至5中任一項(xiàng)所述基于云計(jì)算的微服務(wù)動態(tài)部署系統(tǒng)的方法,其特征在于:所述的方法包括: 6-1)、系統(tǒng)管理員通過系統(tǒng)管理Portal配置每臺服務(wù)容器的信息,包括:服務(wù)器的IP地址、DNS域名、內(nèi)存總量、網(wǎng)絡(luò)出口帶寬、所處區(qū)域(或服務(wù)區(qū)域)、支持的運(yùn)行時環(huán)境、支持的服務(wù)接口通信協(xié)議(如TCP/HTTP/HTTPS/Websocket/CoAP等)和可支持的訪問并發(fā)量; 6-2)、當(dāng)服務(wù)開發(fā)者/提供者訪問服務(wù)管理Portal,服務(wù)管理Portal通過系統(tǒng)接口 B從系統(tǒng)管理Portal獲取服務(wù)容器的配置信息,并將相關(guān)信息呈現(xiàn)給服務(wù)管理Portal的使用者,便于服務(wù)開發(fā)者/提供者選擇服務(wù)容器創(chuàng)建的相關(guān)參數(shù),這些參數(shù)包括:可用的服務(wù)容器運(yùn)行時環(huán)境、服務(wù)容器的區(qū)域、可用的服務(wù)容器內(nèi)存和可用的服務(wù)容器并發(fā)量; 6-3)、微服務(wù)提供者通過服務(wù)管理Portal創(chuàng)建一個服務(wù)容器實(shí)例(虛擬的服務(wù)容器),創(chuàng)建微服務(wù)容器實(shí)例時,需要指定如下信息,包括:容器實(shí)例名稱、目標(biāo)服務(wù)區(qū)域、運(yùn)行時環(huán)境類型、服務(wù)接口通信協(xié)議和訪問并發(fā)量; 6-4)、當(dāng)微服務(wù)提供者通過服務(wù)管理Portal提交了創(chuàng)建服務(wù)容器實(shí)例的配置參數(shù)后,服務(wù)管理Portal通過系統(tǒng)A接口將相關(guān)參數(shù)提交給服務(wù)部署調(diào)度裝置,服務(wù)部署調(diào)度裝置根據(jù)服務(wù)部署條件匹配算法為該服務(wù)容器實(shí)例選擇一臺或多臺服務(wù)容器,并將選中的服務(wù)容器的空間(這里是一個虛擬的概念,一個空間由一組服務(wù)資源參數(shù)決定,包括但不限于:內(nèi)存使用量、網(wǎng)絡(luò)帶寬使用量、支持的訪問并發(fā)量等)分配給對應(yīng)的服務(wù)容器實(shí)例,為該服務(wù)容器實(shí)例生成一個唯一標(biāo)識CID,同時將為其分配的空間信息、對應(yīng)的服務(wù)容器的信息(包括:DNS域名、服務(wù)區(qū)域等)與CID關(guān)聯(lián)并寫入數(shù)據(jù)庫; 6-5)、服務(wù)部署調(diào)度裝置將創(chuàng)建服務(wù)容器實(shí)例的信息通過A接口返回給服務(wù)管理Portal,服務(wù)管理Portal將服務(wù)容器實(shí)例的相關(guān)信息寫入數(shù)據(jù)庫,并將服務(wù)容器實(shí)例的相關(guān)信息呈現(xiàn)給使用者,呈現(xiàn)的方式包括但不限于HTML頁面和運(yùn)行在任何計(jì)算機(jī)或移動終端的客戶端軟件,所呈現(xiàn)的信息包括:容器實(shí)例名稱、運(yùn)行時環(huán)境類型、容器版本、容器能力、容器支持的通信協(xié)議和創(chuàng)建時間等; 6-6)、微服務(wù)開發(fā)者/提供者通過服務(wù)管理Portal界面選擇某個已經(jīng)創(chuàng)建的服務(wù)容器實(shí)例,并向其提交(添加)一個微服務(wù)應(yīng)用程序,用戶提交微服務(wù)應(yīng)用程序后,服務(wù)管理Portal通過調(diào)用系統(tǒng)接口 C讓用戶將微服務(wù)應(yīng)用程序上傳至服務(wù)程序管理裝置,服務(wù)管理Portal再通過系統(tǒng)A接口將微服務(wù)應(yīng)用程序的相關(guān)信息提交給服務(wù)部署調(diào)度裝置,信息包括服務(wù)應(yīng)用程序在服務(wù)程序管理裝置中存儲位置、訪問路徑和該微服務(wù)對應(yīng)的服務(wù)容器實(shí)例; 6-7)、服務(wù)部署調(diào)度裝置根據(jù)服務(wù)管理Portal提交的服務(wù)應(yīng)用程序信息通過系統(tǒng)E接口獲取服務(wù)應(yīng)用程序并通過F接口提交給服務(wù)容器實(shí)例對應(yīng)的服務(wù)容器裝置里,并由服務(wù)容器的運(yùn)行時環(huán)境啟動運(yùn)行。服務(wù)部署調(diào)度裝置為該微服務(wù)生成一個唯一標(biāo)識AID,并連同微服務(wù)的相關(guān)信息和它在服務(wù)容器中運(yùn)行的訪問路徑一起寫入數(shù)據(jù)庫; 6-8)、服務(wù)部署調(diào)度裝置將微服務(wù)在容器中運(yùn)行的的訪問路徑和其它相關(guān)信息返回給服務(wù)管理Portal,包括:微服務(wù)的標(biāo)識AID和服務(wù)配置參數(shù),服務(wù)管理Portal將微服務(wù)的相關(guān)信息存入數(shù)據(jù)庫,并呈現(xiàn)給服務(wù)管理Portal的使用者,呈現(xiàn)方式包括HTML頁面和運(yùn)行在各種計(jì)算或移動設(shè)備終端的應(yīng)用程序界面; 6-9)、微服務(wù)使用客戶端或應(yīng)用程序根據(jù)在服務(wù)管理Portal呈現(xiàn)的微服務(wù)的訪問路徑,和服務(wù)接口定義的通信協(xié)議訪問微服務(wù),并使用其提供的服務(wù)能力;由于一個微服務(wù)根據(jù)其在部署時所要求的響應(yīng)能力,被部署在一個或多個具有相同DNS域名的服務(wù)容器上,所以當(dāng)多個服務(wù)使用客戶端訪問服務(wù)時,訪問的路徑被分配到一臺相同的服務(wù)容器上或不同的服務(wù)容器上,實(shí)現(xiàn)服務(wù)的負(fù)載均衡與服務(wù)的高可用性。7.根據(jù)權(quán)利要求6中所述基于云計(jì)算的微服務(wù)動態(tài)部署系統(tǒng)的方法,其特征在于:每臺服務(wù)容器設(shè)有對應(yīng)一條配置信息記錄,配置信息包括:服務(wù)容器的中央處理器能力(如CPU型號和核數(shù))、內(nèi)存容量、網(wǎng)絡(luò)帶寬、訪問并發(fā)量、運(yùn)行時環(huán)境、服務(wù)區(qū)域、服務(wù)接口協(xié)議和DNS域名,所述的運(yùn)行時環(huán)境為一個整數(shù),為所支持的每種運(yùn)行時環(huán)境類型值的二進(jìn)制或值,每種運(yùn)行時環(huán)境對應(yīng)的計(jì)算機(jī)語言或類型由一個二進(jìn)制數(shù)表示,其二進(jìn)制數(shù)的位數(shù)根據(jù)系統(tǒng)所支持的運(yùn)行時環(huán)境種類數(shù)而定;所述服務(wù)區(qū)域?yàn)橐粋€整數(shù),為所服務(wù)區(qū)域表示值的二進(jìn)制或值,每個服務(wù)區(qū)域由一個二進(jìn)制數(shù)表示,其二進(jìn)制數(shù)的位數(shù)根據(jù)系統(tǒng)所支持的服務(wù)區(qū)域數(shù)而定;所述服務(wù)接口協(xié)議為一個整數(shù),為所支持的所有通信協(xié)議的表示值的二進(jìn)制或值,每種通信協(xié)議由一個二進(jìn)制數(shù)表示,其二進(jìn)制數(shù)的位數(shù)根據(jù)系統(tǒng)所支持的總的通信協(xié)議數(shù)而定。8.根據(jù)權(quán)利要求7中所述基于云計(jì)算的微服務(wù)動態(tài)部署系統(tǒng)的方法,其特征在于:所述的每臺服務(wù)容器至少分配一個DNS訪問域名,其中一臺或多臺服務(wù)容器具有相同的域名,所述的域名參數(shù)包括:一個前綴、容器所支持的運(yùn)行時環(huán)境標(biāo)識、容器姐妹數(shù)(即具有相同域名的容器數(shù))、該容器所支持的服務(wù)區(qū)域標(biāo)識、一個序號和域名后綴,所述的前綴為任意字符串;所述的容器姐妹數(shù)為具有相同域名的容器數(shù)量N,若一個微服務(wù)程序被部署到該容器,則同樣的應(yīng)用程序也會被部署到其他N-1臺姐妹容器上;所述的序號為同類容器的一個序列標(biāo)識,表示具有多組同類容器,同類容器指它們具有相同的運(yùn)行時環(huán)境,相同的容器姐妹數(shù),相同的服務(wù)區(qū)域;所述的域名前綴、容器所支持的運(yùn)行時環(huán)境標(biāo)識、容器姐妹數(shù)、容器所支持的服務(wù)區(qū)域標(biāo)識和序號一起連成的字符串對應(yīng)一個二級域名或其他級子域名,作為該容器的標(biāo)識;所述的域名后綴為一級域名(如dasudian.com)或包含了子域名的全域名字符串。9.根據(jù)權(quán)利要求6中所述基于云計(jì)算的微服務(wù)動態(tài)部署系統(tǒng)的方法,其特征在于:所述的服務(wù)部署條件匹配算法如下: 9-1)、服務(wù)管理Portal將用戶欲創(chuàng)建的容器實(shí)例的配置參數(shù)提交給服務(wù)部署調(diào)度裝置,參數(shù)包括:目標(biāo)服務(wù)區(qū)域、容器運(yùn)行時環(huán)境、通信協(xié)議、要求的內(nèi)存量和要求訪問并發(fā)量; 9-2)、服務(wù)部署調(diào)度裝置查詢系統(tǒng)配置中的通信協(xié)議與域名對應(yīng)表,將在第9-1步中獲得的容器實(shí)例要求的通信協(xié)議與該對應(yīng)表中的協(xié)議標(biāo)識進(jìn)行二進(jìn)制與運(yùn)算,若與運(yùn)算結(jié)果為I,則將對應(yīng)的域名放入備選;若與運(yùn)算結(jié)果為O,則將忽略掉對應(yīng)的域名;通過匹配得到一個備選DNS列表LI。 9-3)、將在第9-1步中獲得的容器實(shí)例要求的運(yùn)行時環(huán)境與域名備選列表LI里的每個域名的運(yùn)行時環(huán)境標(biāo)識做二進(jìn)制與運(yùn)算,若與運(yùn)算結(jié)果為I,則將對應(yīng)的域名放入備選列表L2;若與運(yùn)算結(jié)果為O,則將忽略掉對應(yīng)的域名,通過匹配后得到一個備選DNS域名列表L2; 9-4)、將在第9-1步中獲得的容器實(shí)例要求的目標(biāo)服務(wù)區(qū)域與域名備選列表L2中的每個域名的服務(wù)區(qū)域標(biāo)識做二進(jìn)制與運(yùn)算,將每個域名對應(yīng)的與運(yùn)算結(jié)果按從大到小的順序排序,得到備選域名列表L3; 9-5)、從備選域名列表L3中選出第一個域名(在第9-4步中獲得與運(yùn)算值結(jié)果最大者),并查詢可用服務(wù)容器表(可用服務(wù)容器表信息包括:容器標(biāo)識符ID、容器可用內(nèi)存量、可分配的訪問并發(fā)量和對應(yīng)的DNS域名),若能查詢到與所選出的域名對應(yīng)的服務(wù)容器SC (SC可能為一臺容器,或?yàn)槎嗯_姐妹容器),則進(jìn)入第9-6步,否則按順序從域名列表L3中選出下一條域名,并重復(fù)第9-5步; 9-6)、根據(jù)在第9-5步中選出的域名所對應(yīng)的容器姐妹數(shù),做以下兩種情況的處理: a)、容器姐妹數(shù)為I,則比較在第9-1步中獲得的容器實(shí)例要求的內(nèi)存量或最大訪問并發(fā)量,定義為要求能力值Cr(具體選用那個能力參數(shù)做匹配由具體的系統(tǒng)實(shí)現(xiàn)而定),與在第9-5步中獲得的容器SC的可用內(nèi)存量或可用訪問并發(fā)量,定義為可用能力值Ca作比較,若前者Cr小于后者Ca,則該容器SC被選中為所創(chuàng)建的容器實(shí)例提供服務(wù)空間,并同時將后者值減去前者值得到一個剩余的可用內(nèi)存量或剩余的可用訪問并發(fā)量,稱為剩余可用能力值Ct,并更新可用服務(wù)容器表;若前者Cr大于后者Ca,則重復(fù)第7-5步,選出新的服務(wù)容器SC; b)、容器姐妹數(shù)為n> I,則將第9-1步中獲得的容器實(shí)例要求的內(nèi)存量或最大訪問并發(fā)量,定義為要求能力值Cr,除以η,商Cn,余Cm,比較Cn值與在第9_5步中獲得的容器SC中某臺姐妹容器的可用內(nèi)存量或可用訪問并發(fā)量,定義為可用能力值Ca,若前者Cn小于后者Ca,則將Cn分配給SC中的每臺姐妹容器承擔(dān),并將Cm分成能力單元隨機(jī)分配給其中的Cm臺姐妹容器承擔(dān),將每臺姐妹容器的可用能力值Ca減去其所承擔(dān)的能力總值得到剩余的可用能力值Ct,并更新可用服務(wù)容器表;若前者Cn大于后者Ca,,則重復(fù)第9-5步,選出新的服務(wù)容器SC; 9-7)、在第9-6步中,若某服務(wù)容器SC(包括多臺姐妹容器的情況)被選中為所創(chuàng)建的容器實(shí)例提供服務(wù)空間,并將原可用能力值Ca減去被分配掉的Cr之后得到的剩余可用能力值Ct小于某個閾值CO,則將該容器SC從可用容器表中刪除,并將其信息記錄到不可用容器表,不可用容器表包含的信息包括容器在系統(tǒng)中的唯一標(biāo)識ID和容器對應(yīng)的域名。
【文檔編號】H04L29/08GK105959138SQ201610280798
【公開日】2016年9月21日
【申請日】2016年4月29日
【發(fā)明人】猶杰
【申請人】深圳前海大數(shù)點(diǎn)科技有限公司