本發(fā)明涉及數(shù)據(jù)庫服務(wù)管理領(lǐng)域,尤其涉及實(shí)例服務(wù)的自動(dòng)注冊(cè)、發(fā)現(xiàn)與銷毀的方法、裝置及系統(tǒng)。
背景技術(shù):
電網(wǎng)運(yùn)營狀態(tài)瞬息萬變,對(duì)實(shí)時(shí)性要求很高,而主動(dòng)配電網(wǎng),長期以來智能化程度很低,很大一部分原因,就是因?yàn)橄到y(tǒng)的應(yīng)急反應(yīng)能力達(dá)不到運(yùn)營要求,那怕只需要幾秒種的計(jì)算延誤,也足以給電網(wǎng)生產(chǎn)系統(tǒng)帶來災(zāi)難性的影響。所以主動(dòng)配電網(wǎng)的智能化調(diào)度往往是通過仿真計(jì)算(基于電網(wǎng)的實(shí)際運(yùn)營數(shù)據(jù)),模擬電網(wǎng)的各種異常狀況,找到針對(duì)各種異常狀況的解決方案,提前設(shè)定在電網(wǎng)的生產(chǎn)系統(tǒng)中。當(dāng)生產(chǎn)系統(tǒng)遇到某種異常情況時(shí),就自動(dòng)切換到對(duì)應(yīng)的解決方案,從而節(jié)省了保貴的決策時(shí)間,其實(shí)就是一種空間換時(shí)間的方法。這種通過仿真環(huán)境模擬電網(wǎng)各種運(yùn)行狀況的情景就稱之為多場(chǎng)景多態(tài)。多場(chǎng)景多態(tài)是進(jìn)行仿真計(jì)算的基礎(chǔ),因?yàn)楸仨毾扔心M環(huán)境,才能進(jìn)行仿真計(jì)算。
電力行業(yè)的所謂多場(chǎng)景是個(gè)人為劃分的概念,比如安全場(chǎng)景,異常場(chǎng)景,特定事件場(chǎng)景等,每個(gè)場(chǎng)景下都存在多種選擇方案,稱為多態(tài),多場(chǎng)景多態(tài)如附圖1所示,多態(tài)數(shù)據(jù)庫是基于生產(chǎn)庫而生成的,生產(chǎn)庫按不同研究目的可生成多個(gè)多態(tài)數(shù)據(jù)庫版本,分別用于滿足不同的仿真試驗(yàn)場(chǎng)合。多態(tài)數(shù)據(jù)庫僅僅是一些數(shù)據(jù)文件而已,所謂多態(tài)實(shí)例,是指數(shù)據(jù)庫服務(wù)進(jìn)程加載某個(gè)多態(tài)數(shù)據(jù)庫文件,從而生成特定的可運(yùn)行的數(shù)據(jù)庫服務(wù)。
現(xiàn)有的多態(tài)方案(包括但不限于電力行業(yè))在數(shù)據(jù)的加載及部署環(huán)節(jié),主要依靠人工完成,工作量大,效率低,還容易出錯(cuò),而且由于涉及大量多態(tài)版本的管理,很容易造成混亂。
現(xiàn)有的多態(tài)方案資源共享率很低,一個(gè)多態(tài)實(shí)例往往需要獨(dú)占一批服務(wù)器資源,且完成驗(yàn)證后,資源的釋放也是個(gè)很大的問題,一般需要人工刪除,清理或重裝系統(tǒng)。
現(xiàn)有的多態(tài)系統(tǒng),在多態(tài)數(shù)據(jù)庫實(shí)例部署上線后,業(yè)務(wù)系統(tǒng)如要訪問該實(shí)例,還需在業(yè)務(wù)系統(tǒng)中人工配置好該實(shí)例數(shù)據(jù)庫對(duì)應(yīng)的IP地址與端口,缺少一種有效的服務(wù)自動(dòng)注冊(cè)與發(fā)現(xiàn)機(jī)制。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例提供一種實(shí)例服務(wù)的管理方法、裝置及系統(tǒng),可以實(shí)現(xiàn)多態(tài)實(shí)例服務(wù)的快速自動(dòng)注冊(cè)、發(fā)現(xiàn)以及銷毀。
進(jìn)一步來講,上述實(shí)例服務(wù)的管理方法包括:
監(jiān)聽實(shí)例服務(wù)的部署狀態(tài);
響應(yīng)于部署的成功狀態(tài),獲取實(shí)例服務(wù)的標(biāo)識(shí);
保存該實(shí)例服務(wù)的標(biāo)識(shí)到目錄中。
進(jìn)一步的,該方法還包括:
接收調(diào)用外部應(yīng)用接口的命令;
通過外部應(yīng)用接口獲取所有實(shí)例服務(wù)的標(biāo)識(shí);
返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
進(jìn)一步的,該方法還包括:
接收調(diào)用外部應(yīng)用接口的命令;
通過外部應(yīng)用接口獲取指定的實(shí)例服務(wù)的標(biāo)識(shí);
返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
進(jìn)一步的,該方法還包括:
監(jiān)聽目錄中的實(shí)例服務(wù)的部署狀態(tài);
響應(yīng)于實(shí)例服務(wù)下線的狀態(tài),從該目錄中刪除該實(shí)例服務(wù)的標(biāo)識(shí),并釋放該實(shí)例服務(wù)所占用的資源。
為實(shí)現(xiàn)上述方法,本申請(qǐng)實(shí)施例還提供一種服務(wù)實(shí)例管理裝置,包括:
第一監(jiān)聽模塊,用于監(jiān)聽實(shí)例服務(wù)的部署狀態(tài);
第一獲取模塊,用于響應(yīng)于部署的成功狀態(tài),獲取實(shí)例服務(wù)的標(biāo)識(shí);
保存模塊,用于保存該實(shí)例服務(wù)的標(biāo)識(shí)到目錄中。
進(jìn)一步的,所述實(shí)例服務(wù)管理裝置還包括:
接收模塊,用于接收調(diào)用外部應(yīng)用接口的命令;
第二獲取模塊,用于通過外部應(yīng)用接口獲取所有實(shí)例服務(wù)的標(biāo)識(shí);
返回模塊,用于返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
進(jìn)一步的,所述實(shí)例服務(wù)管理裝置還包括:
接收模塊,用于接收調(diào)用外部應(yīng)用接口的命令;
第三獲取模塊,用于通過外部應(yīng)用接口獲取指定的實(shí)例服務(wù)的標(biāo)識(shí);
返回模塊,用于返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
進(jìn)一步的,所述實(shí)例服務(wù)管理裝置還包括:
第二監(jiān)聽模塊,用于監(jiān)聽目錄中的實(shí)例服務(wù)的部署狀態(tài);
刪除模塊,用于響應(yīng)于實(shí)例服務(wù)下線的狀態(tài),從該目錄中刪除該實(shí)例服務(wù)的標(biāo)識(shí),并釋放該實(shí)例服務(wù)所占用的資源。
為實(shí)現(xiàn)上述方法,本申請(qǐng)實(shí)施例還提供一種實(shí)例服務(wù)的管理系統(tǒng),包括:
云服務(wù)平臺(tái),用于部署實(shí)例服務(wù);
發(fā)布管理模塊,用于監(jiān)聽實(shí)例服務(wù)的部署狀態(tài);
存儲(chǔ)模塊,用于保存已經(jīng)部署的實(shí)例服務(wù)的原數(shù)據(jù);
外部應(yīng)用接口模塊,用于封裝對(duì)所述實(shí)例服務(wù)的所有操作。
進(jìn)一步的,當(dāng)所述發(fā)布管理模塊監(jiān)聽到部署成功的狀態(tài),獲取實(shí)例服務(wù)的標(biāo)識(shí),并將所述實(shí)例服務(wù)的標(biāo)識(shí)保存到存儲(chǔ)模塊中。
進(jìn)一步的,當(dāng)所述發(fā)布管理模塊監(jiān)聽到實(shí)例服務(wù)下線的狀態(tài),從存儲(chǔ)模塊中刪除所述實(shí)例服務(wù)的標(biāo)識(shí),并釋放該實(shí)例服務(wù)所占用的資源。
進(jìn)一步的,當(dāng)所述外部應(yīng)用接口模塊接收到調(diào)用命令,通過外部應(yīng)用接口獲取所有實(shí)例服務(wù)的標(biāo)識(shí),并返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
進(jìn)一步的,當(dāng)所述外部應(yīng)用接口模塊接收到調(diào)用命令,通過外部應(yīng)用接口獲取指定的實(shí)例服務(wù)的標(biāo)識(shí),并返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
本發(fā)明實(shí)施例,利用監(jiān)聽部署事件來自動(dòng)注冊(cè)、發(fā)現(xiàn)和銷毀實(shí)例服務(wù),實(shí)現(xiàn)快速高效,自動(dòng)化的基于容器云的智能化多場(chǎng)景多態(tài)實(shí)現(xiàn),相比于現(xiàn)有技術(shù)靠人工注冊(cè)、發(fā)現(xiàn)和銷毀實(shí)例服務(wù)的技術(shù)方案,大大提高了自動(dòng)化程度以及工作效率。
附圖說明
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是現(xiàn)有技術(shù)中多場(chǎng)景多態(tài)的示意圖;
圖2是本發(fā)明實(shí)施例中實(shí)例服務(wù)自動(dòng)注冊(cè)過程的示意圖;
圖3是本發(fā)明實(shí)施例中實(shí)例服務(wù)自動(dòng)發(fā)現(xiàn)過程的示意圖;
圖4是本發(fā)明實(shí)施例中實(shí)例服務(wù)自動(dòng)發(fā)現(xiàn)過程的又一示意圖;
圖5是本發(fā)明實(shí)施例中實(shí)例服務(wù)自動(dòng)銷毀過程的示意圖;
圖6是本發(fā)明實(shí)施例中實(shí)例服務(wù)管理裝置的示意圖;
圖7是本發(fā)明實(shí)施例中實(shí)例服務(wù)管理裝置的又一示意圖;
圖8是本發(fā)明實(shí)施例中實(shí)例服務(wù)管理裝置的又一示意圖;
圖9是本發(fā)明實(shí)施例中實(shí)例服務(wù)管理裝置的又一示意圖;
圖10是本發(fā)明實(shí)施例中實(shí)例服務(wù)管理系統(tǒng)的示意圖;
圖11是本發(fā)明實(shí)施例中整體數(shù)據(jù)流程的示意圖;
圖12是本發(fā)明實(shí)施例中目錄的樹形存儲(chǔ)結(jié)構(gòu)示意圖。
具體實(shí)施方式
如在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會(huì)用不同名詞來稱呼同一個(gè)組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”?!按笾隆笔侵冈诳山邮盏恼`差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達(dá)到所述技術(shù)效果。說明書后續(xù)描述為實(shí)施本發(fā)明的較佳實(shí)施方式,然所述描述乃以說明本發(fā)明的一般原則為目的,并非用以限定本發(fā)明的范圍。本發(fā)明的保護(hù)范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。
針對(duì)現(xiàn)有技術(shù)中,不能自動(dòng)注冊(cè)、發(fā)現(xiàn)及銷毀實(shí)例服務(wù)的技術(shù)問題,本發(fā)明實(shí)施例提出一種如附圖2中所示的實(shí)例服務(wù)的管理方法,該方法包括:
步驟210,監(jiān)聽實(shí)例服務(wù)的部署狀態(tài);
在該步驟中,實(shí)例服務(wù)可以是例如部署于容器云平臺(tái)中,所謂容器云,是指基于docker的第二代云服務(wù)基礎(chǔ)平臺(tái),Docker是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化。所述的部署狀態(tài),可以是比如部署成功或?qū)嵗?wù)下線等,該監(jiān)聽動(dòng)作可以是輪詢預(yù)設(shè)的存儲(chǔ)區(qū)域中的狀態(tài)參數(shù),如當(dāng)部署成功時(shí),容器云平臺(tái)將部署成功的實(shí)例服務(wù)的標(biāo)識(shí)發(fā)送至預(yù)設(shè)的成功狀態(tài)存儲(chǔ)區(qū)域,當(dāng)監(jiān)聽到該成功狀態(tài)存儲(chǔ)區(qū)域中存儲(chǔ)有實(shí)例服務(wù)標(biāo)識(shí)時(shí),表示該標(biāo)識(shí)所代表的實(shí)例服務(wù)部署成功;當(dāng)實(shí)例服務(wù)下線時(shí),容器云平臺(tái)將下線的實(shí)例服務(wù)的標(biāo)識(shí)發(fā)送至預(yù)設(shè)的下線狀態(tài)存儲(chǔ)區(qū)域,當(dāng)監(jiān)聽到該下線狀態(tài)存儲(chǔ)區(qū)域中的實(shí)例服務(wù)標(biāo)識(shí)時(shí),標(biāo)識(shí)該標(biāo)識(shí)所代表的實(shí)例服務(wù)已經(jīng)下線??蛇x的,也可以使用實(shí)例服務(wù)標(biāo)識(shí)加狀態(tài)標(biāo)志位的方法標(biāo)識(shí)部署的狀態(tài),比如“實(shí)例服務(wù)標(biāo)識(shí)+1”表示實(shí)例服務(wù)部署成功,“實(shí)例服務(wù)標(biāo)識(shí)+0”標(biāo)識(shí)實(shí)例服務(wù)下線,這樣做的好處是不用預(yù)先區(qū)分存儲(chǔ)區(qū)域是用于存儲(chǔ)部署成功的實(shí)例服務(wù)標(biāo)識(shí)還是存儲(chǔ)已經(jīng)下線的實(shí)例服務(wù)標(biāo)識(shí)??蛇x的,該監(jiān)聽可以是云平臺(tái)在實(shí)例服務(wù)的狀態(tài)發(fā)生變化時(shí),出發(fā)通知事件,通過該通知事件來判斷實(shí)例服務(wù)的狀態(tài)。
步驟220,響應(yīng)于部署的成功狀態(tài),獲取實(shí)例服務(wù)的標(biāo)識(shí);
如步驟210中所描述,當(dāng)監(jiān)聽到成功狀態(tài)存儲(chǔ)區(qū)域中存儲(chǔ)有實(shí)例服務(wù)標(biāo)識(shí)時(shí)或者存儲(chǔ)區(qū)域中的狀態(tài)標(biāo)志位為1時(shí),表示有實(shí)例服務(wù)部署成功,此時(shí)從存儲(chǔ)區(qū)域中讀取實(shí)例服務(wù)的標(biāo)識(shí),所述實(shí)例服務(wù)的標(biāo)識(shí)為該實(shí)例服務(wù)的編號(hào)或者為由該服務(wù)實(shí)例的編號(hào)以及服務(wù)地址組成的字符串,所述服務(wù)地址可以由IP地址和端口號(hào)組成,比如該實(shí)例服務(wù)的編號(hào)為versionForTest,云平臺(tái)給該實(shí)例服務(wù)所分配的IP地址和端口號(hào)為192.168.0.101:3306,則實(shí)例服務(wù)的標(biāo)識(shí)可以為versionForTest或者versionForTest=192.168.0.101:3306。
步驟230,保存該實(shí)例服務(wù)的標(biāo)識(shí)到目錄中。
該目錄專門用于存儲(chǔ)部署成功的實(shí)例服務(wù)的標(biāo)識(shí),其可以為預(yù)先設(shè)置好的目錄,也可以是動(dòng)態(tài)生成的目錄,舉例來說,該目錄可以為:/db/services/,而保存了實(shí)例服務(wù)的標(biāo)識(shí)之后,該目錄可以例如為:/db/services/versionForTest=192.168.0.101:3306和/db/services/versionForSecurity=192.168.0.122:3306。
通過以上三個(gè)步驟,就完成了實(shí)例服務(wù)的自動(dòng)注冊(cè)過程,該自動(dòng)注冊(cè)過程通過監(jiān)聽服務(wù)部署的狀態(tài),將監(jiān)聽到的部署成功的實(shí)例服務(wù)的標(biāo)識(shí)保存于特定的目錄下。
參照附圖3,所述方法還可以包括以下步驟:
步驟310,接收調(diào)用外部應(yīng)用接口的命令;
所述的外部應(yīng)用接口是封裝了對(duì)所述實(shí)例服務(wù)的所有操作,業(yè)務(wù)端可以通過調(diào)用該外部應(yīng)用接口對(duì)實(shí)例服務(wù)進(jìn)行相應(yīng)的操作,其中可以包括實(shí)例服務(wù)的發(fā)現(xiàn)操作。比如用戶可以通過客戶端發(fā)送查詢命令,來查詢系統(tǒng)中目前可以提供的實(shí)例服務(wù)。
步驟320,通過外部應(yīng)用接口獲取所有實(shí)例服務(wù)的標(biāo)識(shí)。
當(dāng)用戶不知道云平臺(tái)中部署了哪些實(shí)例服務(wù)時(shí),可以調(diào)用外部應(yīng)用接口中的getAllServices(),此時(shí)外部應(yīng)用接口遍歷搜索所述目錄/db/services/,并獲取目錄中所有的實(shí)例服務(wù)的標(biāo)識(shí)。可選的,實(shí)例服務(wù)的標(biāo)識(shí)在目錄中以鏈表結(jié)構(gòu)保存,鏈表中最后一個(gè)實(shí)例服務(wù)的標(biāo)識(shí)之后設(shè)置有結(jié)束符,通過該結(jié)束符判斷是否獲取到所有實(shí)例服務(wù)的標(biāo)識(shí);可選的,實(shí)例服務(wù)的標(biāo)識(shí)在目錄中以N叉樹的結(jié)構(gòu)保存,在N叉樹父節(jié)點(diǎn)中保存有N的個(gè)數(shù),當(dāng)遍歷到第N叉時(shí),表示已經(jīng)獲取到所有的實(shí)例服務(wù)的標(biāo)識(shí),如圖12所示為樹形存儲(chǔ)結(jié)構(gòu)的示意圖。
步驟330,返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
在獲得目錄中所有實(shí)例服務(wù)的標(biāo)識(shí)之后,返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí),此處所返回的實(shí)例服務(wù)的標(biāo)識(shí),可以只包括實(shí)例服務(wù)的編號(hào),也可以是完整的實(shí)例服務(wù)的標(biāo)識(shí)。所返回的實(shí)例服務(wù)的標(biāo)識(shí),可以以列表的形式展現(xiàn)于客戶端的顯示裝置上。如果沒有查詢到任何部署成功的實(shí)例服務(wù),則返回空表或者返回錯(cuò)誤信息。
參照附圖4,所述方法還可以包括以下步驟:
步驟410,接收調(diào)用外部應(yīng)用接口的命令;
所述的外部應(yīng)用接口是封裝了對(duì)所述實(shí)例服務(wù)的所有操作,業(yè)務(wù)端可以通過調(diào)用該外部應(yīng)用接口對(duì)實(shí)例服務(wù)進(jìn)行相應(yīng)的操作,其中可以包括實(shí)例服務(wù)的發(fā)現(xiàn)操作。比如用戶可以通過客戶端發(fā)送查詢命令,來查詢系統(tǒng)中目前可以提供的實(shí)例服務(wù)。
步驟420,通過外部應(yīng)用接口獲取指定的實(shí)例服務(wù)的標(biāo)識(shí)。
當(dāng)用戶知道云平臺(tái)中可能部署了哪些實(shí)例服務(wù)時(shí),可以調(diào)用外部應(yīng)用接口中的getServiceForInstanceID()來指定所要查詢的實(shí)例服務(wù),例如getServiceForInstanceID(‘versionForTest’),此時(shí)外部應(yīng)用接口搜索所述目錄/db/services/,并獲取目錄中編號(hào)為versionForTest的實(shí)例服務(wù)的標(biāo)識(shí)。該實(shí)施例中不限定每次查詢一個(gè)實(shí)例服務(wù),也可以查詢多個(gè),此時(shí)上述接口中的操作例如為getServiceForInstanceID(‘versionForTest,versionForSecurity’),此時(shí)外部應(yīng)用接口搜索所述目錄/db/services/,并獲取目錄中編號(hào)為versionForTest和versionForSecurity的實(shí)例服務(wù)的標(biāo)識(shí)。
步驟430,返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
在獲得目錄中編號(hào)為versionForTest實(shí)例服務(wù)的標(biāo)識(shí)之后,返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí),此處所返回的實(shí)例服務(wù)的標(biāo)識(shí),可以只包括實(shí)例服務(wù)的編號(hào),也可以是完整的實(shí)例服務(wù)的標(biāo)識(shí)。所返回的實(shí)例服務(wù)的標(biāo)識(shí),可以展現(xiàn)于客戶端的顯示裝置上。如果沒有查詢到指定的實(shí)例服務(wù),則返回空表或者返回錯(cuò)誤信息。
通過上述步驟,完成實(shí)例服務(wù)的自動(dòng)發(fā)現(xiàn)過程。
參照附圖5,所述方法還可以包括以下步驟:
步驟510,監(jiān)聽目錄中的實(shí)例服務(wù)的部署狀態(tài);
此處的監(jiān)聽可以是對(duì)上述下線狀態(tài)存儲(chǔ)區(qū)域的輪詢或狀態(tài)存儲(chǔ)區(qū)域的輪詢或者接收通知事件,來判斷已經(jīng)部署成功的實(shí)例服務(wù)是否發(fā)生變化。如當(dāng)下線狀態(tài)存儲(chǔ)區(qū)域中出現(xiàn)了實(shí)例服務(wù)的標(biāo)識(shí)或者狀態(tài)存儲(chǔ)區(qū)中某個(gè)實(shí)例服務(wù)的狀態(tài)標(biāo)志位變成0或者接收到實(shí)例服務(wù)下線的通知事件,判斷實(shí)例服務(wù)已經(jīng)下線。
步驟520,響應(yīng)于實(shí)例服務(wù)下線的狀態(tài),從該目錄中刪除該實(shí)例服務(wù)的標(biāo)識(shí),并釋放該實(shí)例服務(wù)所占用的資源。
當(dāng)判斷目錄中的某個(gè)實(shí)例服務(wù)已經(jīng)下線,則從目錄/db/services/找到該實(shí)例服務(wù)的標(biāo)識(shí),刪除該實(shí)例服務(wù)的標(biāo)識(shí),并釋放該實(shí)例服務(wù)所占用的資源,比如釋放該實(shí)例服務(wù)所占用的內(nèi)存空間,CPU,硬盤空間,網(wǎng)絡(luò)等。
通過上述步驟,實(shí)現(xiàn)了下線實(shí)例服務(wù)的自動(dòng)銷毀,無需人工干預(yù)。
參照附圖6-9為與上述實(shí)例服務(wù)的管理方法對(duì)應(yīng)的實(shí)例服務(wù)的管理裝置,包括:
第一監(jiān)聽模塊600,用于監(jiān)聽實(shí)例服務(wù)的部署狀態(tài);
第一獲取模塊610,用于響應(yīng)于部署的成功狀態(tài),獲取實(shí)例服務(wù)的標(biāo)識(shí);
保存模塊620,用于保存該實(shí)例服務(wù)的標(biāo)識(shí)到目錄中。
所述實(shí)例服務(wù)的管理裝置還包括:
接收模塊700,用于接收調(diào)用外部應(yīng)用接口的命令;
第二獲取模塊710,用于通過外部應(yīng)用接口獲取所有實(shí)例服務(wù)的標(biāo)識(shí);
返回模塊720,用于返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
所述實(shí)例服務(wù)的管理裝置還包括:
接收模塊800,用于接收調(diào)用外部應(yīng)用接口的命令;
第三獲取模塊810,用于通過外部應(yīng)用接口獲取指定的實(shí)例服務(wù)的標(biāo)識(shí);
返回模塊820,用于返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
所述實(shí)例服務(wù)的管理裝置還包括:
第二監(jiān)聽模塊900,用于監(jiān)聽目錄中的實(shí)例服務(wù)的部署狀態(tài);
刪除模塊910,用于響應(yīng)于實(shí)例服務(wù)下線的狀態(tài),從該目錄中刪除該實(shí)例服務(wù)的標(biāo)識(shí),并釋放該實(shí)例服務(wù)所占用的資源。
參見附圖10,本發(fā)明實(shí)施例還提供了一種實(shí)例服務(wù)的管理系統(tǒng),包括:
云服務(wù)平臺(tái)1100,用于部署實(shí)例服務(wù);
該云服務(wù)平臺(tái)可以是容器云服務(wù)平臺(tái),提供基于容器的云服務(wù)基礎(chǔ)環(huán)境,通過虛擬資源池實(shí)現(xiàn)多節(jié)點(diǎn)服務(wù)器的資源整合與管理(內(nèi)存,CPU,硬盤,網(wǎng)絡(luò)等),實(shí)例運(yùn)行于虛擬資源池中。
發(fā)布管理模塊1200,用于監(jiān)聽實(shí)例服務(wù)的部署狀態(tài);
監(jiān)聽的方式如上文所示,此處不再贅述。
存儲(chǔ)模塊1300,用于保存已經(jīng)部署的實(shí)例服務(wù)的元數(shù)據(jù);
該存儲(chǔ)模塊可以為ETCD集群,所述的元數(shù)據(jù)可以為實(shí)例服務(wù)的編號(hào)、云平臺(tái)給實(shí)例服務(wù)所分配的IP地址和端口號(hào)等。
外部應(yīng)用接口模塊1400,用于封裝對(duì)所述實(shí)例服務(wù)的所有操作。
用戶可以用過該外部應(yīng)用接口模塊對(duì)實(shí)例服務(wù)進(jìn)行操作。
當(dāng)所述發(fā)布管理模塊監(jiān)聽到部署成功的狀態(tài),獲取實(shí)例服務(wù)的標(biāo)識(shí),并將所述實(shí)例服務(wù)的標(biāo)識(shí)保存到存儲(chǔ)模塊中;
當(dāng)所述發(fā)布管理模塊監(jiān)聽到實(shí)例服務(wù)下線的狀態(tài),從存儲(chǔ)模塊中刪除所述實(shí)例服務(wù)的標(biāo)識(shí),并釋放該實(shí)例服務(wù)所占用的資源;
當(dāng)所述外部應(yīng)用接口模塊接收到調(diào)用命令,通過外部應(yīng)用接口獲取所有實(shí)例服務(wù)的標(biāo)識(shí),并返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí);
當(dāng)所述外部應(yīng)用接口模塊接收到調(diào)用命令,通過外部應(yīng)用接口獲取指定的實(shí)例服務(wù)的標(biāo)識(shí),并返回所獲取的實(shí)例服務(wù)的標(biāo)識(shí)。
利用附圖10可以描述上述服務(wù)注冊(cè)、發(fā)現(xiàn)和銷毀的過程如下:
1.服務(wù)注冊(cè):
1).發(fā)布管理模塊監(jiān)聽云平臺(tái)多態(tài)實(shí)例的部署情況;
2).多態(tài)實(shí)例部署成功后,發(fā)布管理模塊與云平臺(tái)交互,取得該實(shí)例(versionForTest)在云平臺(tái)中分配到的IP地址與端口;
3).發(fā)布管理模塊在/db/services目錄下新增一條記錄/versionForTest=192.168.0.122:3306,其中192.168.0.122是多態(tài)實(shí)例的ip地址,3306是端口號(hào)。
2.查詢所有注冊(cè)服務(wù):
1).業(yè)務(wù)端調(diào)用外部應(yīng)用接口getAllServices();
2).外部應(yīng)用接口搜索ETCD集群的/db/services目錄;
3).外部應(yīng)用接口得到ETCD集群的注冊(cè)服務(wù)列表‘versionForTest’,‘versionForSecurity’;
4).外部應(yīng)用接口將已注冊(cè)服務(wù)列表(‘versionForTest’,‘versionForSecurity’)返回客戶端。
3.查詢指定服務(wù)
1).業(yè)務(wù)端調(diào)用外部應(yīng)用接口getServiceForInstanceID(‘versionForTest’);
2).外部應(yīng)用接口搜索ETCD集群的/db/services目錄;
3).外部應(yīng)用接口得到ETCD集群注冊(cè)的服務(wù)信息/versionForTest=192.168.0.122:3306;
4).外部應(yīng)用接口將該服務(wù)的元信息(‘192.168.0.122:3306’)返回客戶端。
4.注冊(cè)服務(wù)銷毀
1).發(fā)布管理模塊監(jiān)聽云平臺(tái)多態(tài)實(shí)例的部署情況;
2).發(fā)布管理模塊監(jiān)聽到服務(wù)名稱為versionForTest的多態(tài)實(shí)例已在云平臺(tái)下線;
3).發(fā)布管理模塊將/db/services目錄下記錄/versionForTest=192.168.0.122:3306刪除;
多態(tài)實(shí)例服務(wù)的自動(dòng)注冊(cè)與發(fā)現(xiàn)基于多態(tài)編號(hào)(instanceID),每個(gè)多態(tài)實(shí)例都有一個(gè)唯一的多態(tài)編號(hào)(instanceID),多態(tài)編號(hào)也是多態(tài)實(shí)例的服務(wù)名稱。多態(tài)服務(wù)的元數(shù)據(jù)信息存貯在ETCD集群中,ETCD基于目錄結(jié)構(gòu)存貯,ETCD存貯結(jié)構(gòu)設(shè)計(jì)如圖12所示,/db/services目錄結(jié)構(gòu)說明如下:/versionForTest=192.168.0.101:3306,其中versionForTest是多態(tài)實(shí)例的編號(hào)(instanceID),也即多態(tài)實(shí)例服務(wù)名稱,192.168.0.101:3306分別是該多態(tài)實(shí)例對(duì)應(yīng)的IP地址與端口。
參見附圖11,為本發(fā)明實(shí)施例的整體數(shù)據(jù)流程圖。多態(tài)數(shù)據(jù)庫是基于生產(chǎn)庫而生成的,生產(chǎn)庫按不同研究目的可生成多個(gè)多態(tài)數(shù)據(jù)庫版本,分別用于滿足不同的仿真試驗(yàn)場(chǎng)合。數(shù)據(jù)庫服務(wù)進(jìn)程加載某個(gè)多態(tài)數(shù)據(jù)庫文件,從而生成特定的可運(yùn)行的數(shù)據(jù)庫服務(wù)-多態(tài)實(shí)例。經(jīng)過注冊(cè)和自動(dòng)發(fā)現(xiàn)過程,不同的業(yè)務(wù)可以訪問相應(yīng)的多態(tài)實(shí)例。
如無特殊說明,本發(fā)明實(shí)施例中的“實(shí)例”可以指代普通的實(shí)例,也可以指代多態(tài)實(shí)例。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
上述說明示出并描述了本發(fā)明的若干具體實(shí)施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對(duì)其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識(shí)進(jìn)行改動(dòng)。而本領(lǐng)域人員所進(jìn)行的改動(dòng)和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。