本申請(qǐng)涉及信息技術(shù)領(lǐng)域,特別是涉及一種應(yīng)用部署方法和一種應(yīng)用部署裝置。
背景技術(shù):
現(xiàn)代軟件系統(tǒng)通常有很多依賴,特別是在云環(huán)境中,一個(gè)應(yīng)用會(huì)依賴底層的運(yùn)行時(shí)環(huán)境和很多第三方庫(kù)、周邊的系統(tǒng),比如語(yǔ)言運(yùn)行時(shí)環(huán)境、數(shù)據(jù)庫(kù)、Web服務(wù)器、分布式存儲(chǔ)。應(yīng)用本身有很多的配置文件來(lái)管理這些依賴,比如庫(kù)文件運(yùn)行時(shí)參數(shù)、數(shù)據(jù)庫(kù)連接配置、Web服務(wù)器配置、自身的啟動(dòng)參數(shù)。在部署過(guò)程中,需要先寫(xiě)入這些配置信息,然后加載相關(guān)依賴,最后啟動(dòng)應(yīng)用。
為了做到從準(zhǔn)備好安裝包到應(yīng)用正確啟動(dòng)的自動(dòng)化應(yīng)用部署,必須定制每個(gè)應(yīng)用的部署流程,解決部署過(guò)程中的依賴問(wèn)題、配置管理和可根據(jù)部署需要進(jìn)行動(dòng)態(tài)定制的問(wèn)題,以便在部署的末尾能正確地啟動(dòng)應(yīng)用。
現(xiàn)有的應(yīng)用部署系統(tǒng)包括部署管理模塊、執(zhí)行模塊、SVN服務(wù)器、數(shù)據(jù)庫(kù)和客戶端。該系統(tǒng)下的應(yīng)用部署方法包括:部署管理模塊向執(zhí)行模塊發(fā)送部署命令及部署信息,部署信息包括生產(chǎn)環(huán)境中需要部署的服務(wù)器及組件信息;執(zhí)行模塊接收部署命令及部署信息,并根據(jù)部署信息從數(shù)據(jù)庫(kù)中獲取需要部署的組件的版本信息,將版本信息發(fā)送給需要部署的服務(wù)器上的客戶端;客戶端根據(jù)該版本信息從SVN服務(wù)器下載版本文件,并根據(jù)腳本文件運(yùn)行對(duì)應(yīng)版本文件,完成本次部署。
對(duì)于某些應(yīng)用部署場(chǎng)景,例如考慮中間件的部署場(chǎng)景,不同的中間件集群通常有不同的配置參數(shù)(如數(shù)據(jù)庫(kù)連接信息、啟動(dòng)參數(shù)、集群配置等),以適配上層不同業(yè)務(wù)應(yīng)用的運(yùn)行要求,然而,上述應(yīng)用部署方法在部署時(shí)應(yīng)用的所有部署都只能使用一樣的配置,無(wú)法實(shí)現(xiàn)應(yīng)用部署時(shí)的參數(shù)動(dòng)態(tài)可配置。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例的發(fā)明目的在于提供一種應(yīng)用部署方法,能夠?qū)崿F(xiàn)應(yīng)用部署時(shí)的參數(shù)動(dòng)態(tài)可配置。
相應(yīng)的,本申請(qǐng)實(shí)施例還提供了一種應(yīng)用部署裝置,用以保證上述方法的實(shí)現(xiàn)及應(yīng)用。
為了解決上述問(wèn)題,本申請(qǐng)公開(kāi)了一種應(yīng)用部署方法,包括:
獲取應(yīng)用的運(yùn)行文件包和配置文件包;
獲取預(yù)先生成的配置信息,并根據(jù)所述配置信息修正所述配置文件包;
按照預(yù)先設(shè)置的應(yīng)用部署流程,將所述運(yùn)行文件包及修正后的所述配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,執(zhí)行所述應(yīng)用的安裝過(guò)程。
進(jìn)一步,所述獲取應(yīng)用的運(yùn)行文件包和配置文件包,包括:
在版本基線數(shù)據(jù)庫(kù)中獲取所述應(yīng)用的所述運(yùn)行文件包的版本基線信息和所述配置文件包的版本基線信息;
根據(jù)版本基線信息與云存儲(chǔ)地址之間的對(duì)應(yīng)關(guān)系,獲得所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文件包的云存儲(chǔ)地址;
根據(jù)所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文件包的云存儲(chǔ)地址,從云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述運(yùn)行文件包和所述配置文件包。
進(jìn)一步,所述根據(jù)所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文件包的云存儲(chǔ)地址,從云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述運(yùn)行文件包和所述配置文件包,包括:
根據(jù)所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文件包的云存儲(chǔ)地址,并行從運(yùn)行包云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述運(yùn)行文件包及從配置包云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述配置文件包。
進(jìn)一步,在所述按照預(yù)先設(shè)置的應(yīng)用部署流程,將所述運(yùn)行文件包及修正后的所述配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,執(zhí)行所述應(yīng)用的安裝過(guò)程之前,還包括:
加載與所述應(yīng)用對(duì)應(yīng)的應(yīng)用部署流程模板。
進(jìn)一步,根據(jù)所述配置信息修正所述配置文件包,包括:
對(duì)所述配置信息進(jìn)行解析,獲取配置參數(shù)值;
采用所述配置參數(shù)值對(duì)所述配置文件包中默認(rèn)的運(yùn)行配置參數(shù)進(jìn)行修正。
進(jìn)一步,所述方法還包括:
從軟件包中分離出運(yùn)行文件和配置文件;
為所述配置文件配置默認(rèn)的運(yùn)行配置參數(shù);
為所述運(yùn)行文件配置版本基線信息生成運(yùn)行文件包,并為所述配置文件配置版本基線信息生成配置文件包;
依據(jù)版本基線信息將所述運(yùn)行文件包和配置文件包分別存儲(chǔ)到存儲(chǔ)倉(cāng)庫(kù)對(duì)應(yīng)的云存儲(chǔ)地址中。
進(jìn)一步,將所述運(yùn)行文件包及修正后的所述配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,包括:
通過(guò)異步方式,將所述運(yùn)行文件包及修正后的所述配置文件包批量分發(fā)到應(yīng)用客戶端所在服務(wù)器。
進(jìn)一步,所述配置信息為ini文件。
本申請(qǐng)還公開(kāi)了一種應(yīng)用部署裝置,包括:
獲取單元,被配置為獲取應(yīng)用的運(yùn)行文件包和配置文件包;
修正單元,被配置為獲取預(yù)先生成的配置信息,并根據(jù)所述配置信息修正所述配置文件包;
執(zhí)行單元,被配置為按照預(yù)先設(shè)置的應(yīng)用部署流程,將所述運(yùn)行文件包及修正后的所述配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,執(zhí)行所述應(yīng)用的安裝過(guò)程。
進(jìn)一步,所述獲取單元包括:
信息獲取子單元,被配置為在版本基線數(shù)據(jù)庫(kù)中獲取所述應(yīng)用的所述運(yùn)行文件包的版本基線信息和所述配置文件包的版本基線信息;
地址獲取子單元,被配置為根據(jù)版本基線信息與云存儲(chǔ)地址之間的對(duì)應(yīng)關(guān)系,獲得所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文件包的云存儲(chǔ)地址;
下載子單元,被配置為根據(jù)所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文 件包的云存儲(chǔ)地址,從云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述運(yùn)行文件包和所述配置文件包。
進(jìn)一步,所述下載子單元,被配置為根據(jù)所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文件包的云存儲(chǔ)地址,并行從運(yùn)行包云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述運(yùn)行文件包及從配置包云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述配置文件包。
進(jìn)一步,所述裝置還包括:
加載單元,被配置為在所述執(zhí)行單元按照預(yù)先設(shè)置的應(yīng)用部署流程,將所述運(yùn)行文件包及修正后的所述配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,執(zhí)行所述應(yīng)用的安裝過(guò)程之前,加載與所述應(yīng)用對(duì)應(yīng)的應(yīng)用部署流程模板。
進(jìn)一步,所述修正單元包括:
參數(shù)解析子單元,被配置為對(duì)所述配置信息進(jìn)行解析,獲取配置參數(shù)值;
參數(shù)修正子單元,被配置為采用所述配置參數(shù)值對(duì)所述配置文件包中默認(rèn)的運(yùn)行配置參數(shù)進(jìn)行修正。
進(jìn)一步,還包括:
分離單元,被配置為從軟件包中分離出運(yùn)行文件和配置文件;為所述配置文件配置默認(rèn)的運(yùn)行配置參數(shù);為所述運(yùn)行文件配置版本基線信息生成運(yùn)行文件包,并為所述配置文件配置版本基線信息生成配置文件包;
存儲(chǔ)單元,被配置為依據(jù)版本基線信息將所述運(yùn)行文件包和配置文件包分別存儲(chǔ)到存儲(chǔ)倉(cāng)庫(kù)對(duì)應(yīng)的云存儲(chǔ)地址中。
進(jìn)一步,所述執(zhí)行單元,被配置為通過(guò)異步方式,將所述運(yùn)行文件包及修正后的所述配置文件包批量分發(fā)到應(yīng)用客戶端所在服務(wù)器。
進(jìn)一步,所述配置信息為ini文件。
與現(xiàn)有技術(shù)相比,本申請(qǐng)實(shí)施例包括以下優(yōu)點(diǎn):
本申請(qǐng)實(shí)施例通過(guò)將應(yīng)用的各個(gè)軟件包及其依賴的運(yùn)行時(shí)環(huán)境的安裝包進(jìn)行分離,劃分為運(yùn)行文件包和配置文件包,并預(yù)先針對(duì)不同的運(yùn)行環(huán)境生成配置信息,從而使得在應(yīng)用部署時(shí)可以利用不同運(yùn)行環(huán)境下的配置信息對(duì)配置文件包進(jìn)行修正,從而改變了現(xiàn)有應(yīng)用的所有部署都只能使用同一配置的情況,實(shí)現(xiàn)了應(yīng)用部署時(shí)的參數(shù)動(dòng)態(tài)可配置,進(jìn)而實(shí)現(xiàn)了搭建不同應(yīng)用 集群可以指定不同的運(yùn)行時(shí)配置參數(shù),以適應(yīng)不同的業(yè)務(wù)需求,該方法實(shí)現(xiàn)了應(yīng)用部署的靈活性和動(dòng)態(tài)可定制性。
附圖說(shuō)明
圖1是本申請(qǐng)的一種應(yīng)用部署方法實(shí)施例的步驟流程圖;
圖2是本申請(qǐng)中的一種軟件包的分離和存儲(chǔ)的方法實(shí)施例的步驟流程圖;
圖3是本申請(qǐng)中的一種獲取應(yīng)用的運(yùn)行文件包和配置文件包的方法實(shí)施例的步驟流程圖;
圖4是本申請(qǐng)中的版本基線數(shù)據(jù)庫(kù)與運(yùn)行包云存儲(chǔ)和配置包云存儲(chǔ)之間的關(guān)聯(lián)示意圖;
圖5是本申請(qǐng)的另一種應(yīng)用部署方法實(shí)施例的步驟流程圖;
圖6是本申請(qǐng)中的應(yīng)用部署的一種系統(tǒng)架構(gòu)示意圖;
圖7是本申請(qǐng)的一種應(yīng)用部署裝置實(shí)施例的結(jié)構(gòu)框圖;
圖8是本申請(qǐng)中的一種獲取單元的結(jié)構(gòu)框圖;
圖9是本申請(qǐng)的另一種應(yīng)用部署裝置實(shí)施例的結(jié)構(gòu)框圖;
圖10是本申請(qǐng)中的一種修正單元的結(jié)構(gòu)框圖;
圖11是本申請(qǐng)的又一種應(yīng)用部署裝置實(shí)施例的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說(shuō)明。
參照?qǐng)D1,示出了本申請(qǐng)的一種應(yīng)用部署方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
步驟101,獲取應(yīng)用的運(yùn)行文件包和配置文件包。
本申請(qǐng)實(shí)施例中,用于應(yīng)用部署的裝置或系統(tǒng)(以下簡(jiǎn)稱該裝置)預(yù)先將應(yīng)用的各個(gè)軟件包,及其依賴的運(yùn)行時(shí)環(huán)境的安裝包進(jìn)行分離,劃分為運(yùn)行文件包和配置文件包。
其中,配置文件包可以為不同運(yùn)行環(huán)境下文件包內(nèi)的配置參數(shù)會(huì)發(fā)生變 化或需要修改的文件包,例如中間件的部署場(chǎng)景中,不同的中間件集群通常有不同的配置參數(shù)(如數(shù)據(jù)庫(kù)連接信息、啟動(dòng)參數(shù)、集群配置等),以適配上層不同業(yè)務(wù)應(yīng)用的運(yùn)行要求。該配置文件包中的配置參數(shù)等可以預(yù)先設(shè)置為默認(rèn)值。而運(yùn)行文件包中的數(shù)據(jù)內(nèi)容在不同的運(yùn)行環(huán)境中一般相對(duì)固定。
另外,應(yīng)用的運(yùn)行文件包和配置文件包可以存儲(chǔ)在同一數(shù)據(jù)庫(kù)中,也可以分開(kāi)存儲(chǔ),還可以存儲(chǔ)在云存儲(chǔ)倉(cāng)庫(kù)中等。
該裝置在對(duì)應(yīng)用進(jìn)行部署時(shí),首先獲得該應(yīng)用的運(yùn)行文件包和配置文件包。
步驟102,獲取預(yù)先生成的配置信息,并根據(jù)配置信息修正配置文件包。
該裝置預(yù)先針對(duì)應(yīng)用的不同運(yùn)行環(huán)境生成有不同的配置信息,該配置信息可以包括機(jī)器列表和各配置參數(shù)值,主要可以包括要機(jī)器列表段[deploy-servers],其中列出要部署集群的機(jī)器IP列表,以及配置參數(shù)段[deploy-configs],其中列出適用于這個(gè)集群的的應(yīng)用部署配置參數(shù)值。
該配置信息可以為ini文件。ini文件解析過(guò)程簡(jiǎn)單。
在該裝置上步驟獲得配置文件包后,在本步驟中即可調(diào)取預(yù)先生成的配置信息,然后根據(jù)該配置信息對(duì)配置文件包中的配置參數(shù)進(jìn)行修正。因此,本申請(qǐng)一個(gè)可選實(shí)施例中,根據(jù)所述配置信息修正所述配置文件包,包括:對(duì)所述配置信息進(jìn)行解析,獲取配置參數(shù)值;采用所述配置參數(shù)值對(duì)所述配置文件包中默認(rèn)的運(yùn)行配置參數(shù)進(jìn)行修正。
該裝置可以首先解壓配置文件包獲取其中的配置文件,配置文件中的運(yùn)行配置參數(shù)配置有默認(rèn)值。解析配置信息的ini文件,然后獲取配置信息中的配置參數(shù)值,采用所述配置參數(shù)值對(duì)所述配置文件中默認(rèn)的運(yùn)行配置參數(shù)進(jìn)行修正,即采用配置參數(shù)值插入或替換到配置文件包中的對(duì)應(yīng)文件中,以修改配置文件包中的運(yùn)行配置參數(shù)的默認(rèn)值,從而讓?xiě)?yīng)用在部署時(shí)可以根據(jù)集群環(huán)境、業(yè)務(wù)需要?jiǎng)討B(tài)調(diào)整運(yùn)行時(shí)的配置參數(shù)值,無(wú)需在應(yīng)用部署完之后登錄到機(jī)器來(lái)修改配置參數(shù),實(shí)現(xiàn)了應(yīng)用部署的靈活性和動(dòng)態(tài)可定制性。
在將配置信息中的配置參數(shù)值插入或替換到配置文件包中的對(duì)應(yīng)文件中去的過(guò)程中,如果插入或替換操作產(chǎn)生沖突或者沒(méi)有成功,則修正失敗, 可以直接使用配置文件包的默認(rèn)參數(shù),即直接使用各運(yùn)行配置參數(shù)的默認(rèn)值。
步驟103,按照預(yù)先設(shè)置的應(yīng)用部署流程,將運(yùn)行文件包及修正后的配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,執(zhí)行應(yīng)用的安裝過(guò)程。
在完成對(duì)配置文件包的修正后,該裝置即可根據(jù)應(yīng)用部署流程,將運(yùn)行文件包及修正后的配置文件包分發(fā)到應(yīng)用客戶端所在各服務(wù)器,分別執(zhí)行應(yīng)用的安裝過(guò)程。
本申請(qǐng)實(shí)施例通過(guò)將應(yīng)用的各個(gè)軟件包及其依賴的運(yùn)行時(shí)環(huán)境的安裝包進(jìn)行分離,劃分為運(yùn)行文件包和配置文件包,并預(yù)先針對(duì)不同的運(yùn)行環(huán)境生成配置信息,從而使得在應(yīng)用部署時(shí)可以利用不同運(yùn)行環(huán)境下的配置信息對(duì)配置文件包進(jìn)行修正,從而改變了現(xiàn)有應(yīng)用的所有部署都只能使用同一配置的情況,實(shí)現(xiàn)了應(yīng)用部署時(shí)的參數(shù)動(dòng)態(tài)可配置,進(jìn)而實(shí)現(xiàn)了搭建不同應(yīng)用集群可以指定不同的運(yùn)行時(shí)配置參數(shù),以適應(yīng)不同的業(yè)務(wù)需求,該方法實(shí)現(xiàn)了應(yīng)用部署的靈活性和動(dòng)態(tài)可定制性。
在本申請(qǐng)的另一可選實(shí)施例中,軟件包的分離和存儲(chǔ),具體可以如圖2所示,包括:
步驟201,從軟件包中分離出運(yùn)行文件和配置文件。
步驟202,為所述配置文件配置默認(rèn)的運(yùn)行配置參數(shù)。
本實(shí)施例中,將應(yīng)用的軟件包,及其依賴的運(yùn)行時(shí)環(huán)境的安裝包統(tǒng)稱為軟件包,為了能夠動(dòng)態(tài)定制、部署應(yīng)用,預(yù)先從軟件包中查找配置相關(guān)的數(shù)據(jù)和運(yùn)行相關(guān)的數(shù)據(jù),分離出運(yùn)行文件和配置文件。然后將配置文件進(jìn)行模塊化處理,即生成標(biāo)準(zhǔn)化的配置文件,配置文件中的各運(yùn)行配置參數(shù)均在相應(yīng)的模塊,為各運(yùn)行配置參數(shù)配置默認(rèn)值生成默認(rèn)的運(yùn)行配置參數(shù)。
步驟203,為所述運(yùn)行文件配置版本基線信息生成運(yùn)行文件包,并為所述配置文件配置版本基線信息生成配置文件包。
步驟204,依據(jù)版本基線信息將所述運(yùn)行文件包和配置文件包分別存儲(chǔ)到存儲(chǔ)倉(cāng)庫(kù)對(duì)應(yīng)的云存儲(chǔ)地址中。
本申請(qǐng)實(shí)施例中,一個(gè)應(yīng)用的安裝包會(huì)有多個(gè)版本,運(yùn)行文件包和配置 文件包也可能會(huì)有多個(gè)版本,一個(gè)版本表示一個(gè)基線。因此可以為所述運(yùn)行文件配置版本基線信息生成運(yùn)行文件包,并為所述配置文件配置版本基線信息生成配置文件包。該裝置采用版本基線數(shù)據(jù)庫(kù)對(duì)應(yīng)用的運(yùn)行文件包及配置文件包的版本基線信息進(jìn)行統(tǒng)一管理,該版本基線數(shù)據(jù)庫(kù)中包含各運(yùn)行文件包及配置文件包的版本基線信息以及各版本文件包的存儲(chǔ)地址,而不存儲(chǔ)各文件包。各版本的運(yùn)行文件包及配置文件包可以統(tǒng)一存儲(chǔ)在云存儲(chǔ)倉(cāng)庫(kù)中,通過(guò)HTTP URL來(lái)訪問(wèn)。因此可以依據(jù)版本基線信息分別確定運(yùn)行文件包和配置文件包的云存儲(chǔ)地址,該云存儲(chǔ)地址即為云存儲(chǔ)倉(cāng)庫(kù)中存儲(chǔ)數(shù)據(jù)文件的地址信息,因此可以將所述運(yùn)行文件包和配置文件包分別存儲(chǔ)到存儲(chǔ)倉(cāng)庫(kù)對(duì)應(yīng)的云存儲(chǔ)地址中。
通過(guò)版本基線數(shù)據(jù)庫(kù)來(lái)統(tǒng)一管理版本基線信息和包的云存儲(chǔ)地址而將各文件包存放在云存儲(chǔ)中,可以節(jié)省數(shù)據(jù)庫(kù)的存儲(chǔ)空間,并且各文件包可以從云存儲(chǔ)中方便的下載。另外,各文件包的一個(gè)版本對(duì)應(yīng)一個(gè)基線,該版本基線信息管理方法方便升級(jí)集群上的應(yīng)用。所有配置文件打包存儲(chǔ),統(tǒng)一管理,也避免了下載和拷貝大量的小文件。
在本申請(qǐng)的另一實(shí)施例中,上述獲取應(yīng)用的運(yùn)行文件包和配置文件包的過(guò)程,具體可以如圖3所示,包括:
步驟301,在版本基線數(shù)據(jù)庫(kù)中獲取應(yīng)用的運(yùn)行文件包的版本基線信息和配置文件包的版本基線信息。
該裝置在獲得應(yīng)用的運(yùn)行文件包和配置文件包時(shí),首先在版本基線數(shù)據(jù)庫(kù)中確定運(yùn)行文件包的版本基線信息和配置文件包的版本基線信息。
步驟302,根據(jù)版本基線信息與云存儲(chǔ)地址之間的對(duì)應(yīng)關(guān)系,獲得運(yùn)行文件包的云存儲(chǔ)地址及配置文件包的云存儲(chǔ)地址。
在本步驟中,該裝置再根據(jù)版本基線數(shù)據(jù)庫(kù)中各文件包的版本基線信息與云存儲(chǔ)地址之間的對(duì)應(yīng)關(guān)系,確定出運(yùn)行文件包的云存儲(chǔ)地址及配置文件包的云存儲(chǔ)地址。
步驟303,根據(jù)運(yùn)行文件包的云存儲(chǔ)地址及配置文件包的云存儲(chǔ)地址,從云存儲(chǔ)倉(cāng)庫(kù)中下載獲得運(yùn)行文件包和配置文件包。
在獲得云存儲(chǔ)地址后,該裝置即可從云存儲(chǔ)倉(cāng)庫(kù)中下載獲得該應(yīng)用的運(yùn)行文件包和配置文件包。
在另一實(shí)施例中,為了加快應(yīng)用的運(yùn)行文件包和配置文件包的下載速度,可以將運(yùn)行文件包及配置文件包分別存儲(chǔ)在不同的云存儲(chǔ)倉(cāng)庫(kù)中,如圖4所示,版本基線數(shù)據(jù)庫(kù)中存儲(chǔ)了運(yùn)行文件包的版本基線信息對(duì)應(yīng)的在運(yùn)行包云存儲(chǔ)倉(cāng)庫(kù)中的地址,以及配置文件包的版本基線信息對(duì)應(yīng)的在配置包云存儲(chǔ)倉(cāng)庫(kù)中的地址,那么,根據(jù)運(yùn)行文件包的云存儲(chǔ)地址及配置文件包的云存儲(chǔ)地址,從云存儲(chǔ)倉(cāng)庫(kù)中下載獲得運(yùn)行文件包和所述配置文件包的過(guò)程,具體可以是:
根據(jù)運(yùn)行文件包的云存儲(chǔ)地址及配置文件包的云存儲(chǔ)地址,并行從運(yùn)行包云存儲(chǔ)倉(cāng)庫(kù)中下載獲得運(yùn)行文件包及從配置包云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述配置文件包。
該下載過(guò)程可以使用異步I/O,從而提高下載速度。通過(guò)運(yùn)行文件包和配置文件包的云存儲(chǔ)和版本基線管理,可以實(shí)現(xiàn)集中、批量、并行地分發(fā)軟件包,從而可以進(jìn)行快速的大規(guī)模集群部署。
在本申請(qǐng)的另一實(shí)施例中,在按照預(yù)先設(shè)置的應(yīng)用部署流程,將運(yùn)行文件包及修正后的配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,執(zhí)行應(yīng)用的安裝過(guò)程之前,如圖5所示,該方法還可以包括:
步驟501,加載與該應(yīng)用對(duì)應(yīng)的應(yīng)用部署流程模板。
本實(shí)施例中,該裝置不再使用統(tǒng)一的或固定的應(yīng)用部署流程,而是可以預(yù)先建立多個(gè)應(yīng)用部署流程模板,且不同應(yīng)用的部署流程對(duì)應(yīng)不同的部署流程模板。該部署流程模板主要包括在目標(biāo)機(jī)器上創(chuàng)建安裝目錄、把應(yīng)用和其依賴應(yīng)用的運(yùn)行包和配置包通過(guò)下載模塊批量分發(fā)到目標(biāo)機(jī)器、解壓包、拷貝配置文件、拷貝運(yùn)行文件、檢測(cè)應(yīng)用的服務(wù)進(jìn)程是否存在、若存在則停止、啟動(dòng)新的應(yīng)用服務(wù)、檢查服務(wù)是否啟動(dòng)成功等。不同應(yīng)用根據(jù)自身特點(diǎn)有不同的部署流程模板。該應(yīng)用部署流程模板可以是yaml。
在加載與該應(yīng)用對(duì)應(yīng)的應(yīng)用部署流程模板后,在執(zhí)行前述步驟103時(shí),即可按照該加載的應(yīng)用部署流程,將運(yùn)行文件包及修正后的配置文件包分發(fā) 到應(yīng)用客戶端所在服務(wù)器,執(zhí)行應(yīng)用的安裝過(guò)程。其中,將所述運(yùn)行文件包及修正后的所述配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,包括:通過(guò)異步方式,將所述運(yùn)行文件包及修正后的所述配置文件包批量分發(fā)到應(yīng)用客戶端所在服務(wù)器。即在分發(fā)過(guò)程中可以采用異步I/O方式,并行對(duì)運(yùn)行文件包及修正后的配置文件包進(jìn)行分發(fā),實(shí)現(xiàn)運(yùn)行文件包及修正后的配置文件包的批量分發(fā),通過(guò)運(yùn)行文件包和配置文件包的云存儲(chǔ)和版本基線管理,可以實(shí)現(xiàn)集中、批量、并行地分發(fā)軟件包,從而可以進(jìn)行快速的大規(guī)模集群部署。
相應(yīng)的,應(yīng)用客戶端所在服務(wù)器可以依據(jù)部署流程模板的部署執(zhí)行安裝過(guò)程,例如創(chuàng)建相應(yīng)的安裝目錄,解壓縮安裝包即運(yùn)行文件包及修正后的配置文件包,拷貝配置文件、拷貝運(yùn)行文件,然后檢測(cè)應(yīng)用的服務(wù)進(jìn)程是否存在、若存在則停止、啟動(dòng)新的應(yīng)用服務(wù)、檢查服務(wù)是否啟動(dòng)成功等,進(jìn)行該應(yīng)用的安裝。
該方法可以使不同應(yīng)用的部署流程可定制化,當(dāng)應(yīng)用的部署過(guò)程有變化時(shí),只需更新流程模板,無(wú)需要更新部署模塊或該部署裝置。通過(guò)不同的部署流程模板,可以實(shí)現(xiàn)流程編排。
基于上述實(shí)施例,整個(gè)系統(tǒng)架構(gòu)可以如圖6所示,該裝置首先從版本基線數(shù)據(jù)庫(kù)中獲得運(yùn)行文件包和配置文件包的版本信息及存儲(chǔ)地址,然后從運(yùn)行包云存儲(chǔ)倉(cāng)庫(kù)和配置包云存儲(chǔ)倉(cāng)庫(kù)中并行下載獲得應(yīng)用的運(yùn)行文件包和配置文件包,然后采用預(yù)先生成的配置信息對(duì)配置文件包進(jìn)行修正,在獲得修正后的配置文件包后,從應(yīng)用部署流程模板中確定與該應(yīng)用對(duì)應(yīng)的應(yīng)用部署流程模板,并加載該部署流程模板,然后按照該部署流程模板將運(yùn)行文件包及修正后的配置文件包分發(fā)到應(yīng)用客戶端所在的各服務(wù)器,執(zhí)行應(yīng)用的安裝過(guò)程。其中,底層使用異步I/O來(lái)分發(fā)各安裝包,不僅實(shí)現(xiàn)了批量分發(fā)安裝包到目標(biāo)機(jī)器,還使得對(duì)各臺(tái)機(jī)器分發(fā)運(yùn)行包和配置包時(shí)并行化,從而加快了批量分發(fā)安裝包的速度。
需要說(shuō)明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng)實(shí)施例,某些步驟可以采用其他順序或 者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本申請(qǐng)實(shí)施例所必須的。
參照?qǐng)D7,示出了本申請(qǐng)一種應(yīng)用部署裝置實(shí)施例的結(jié)構(gòu)框圖,具體可以包括如下單元:
獲取單元701,被配置為獲取應(yīng)用的運(yùn)行文件包和配置文件包。
修正單元702,被配置為獲取預(yù)先生成的配置信息,并根據(jù)所述配置信息修正所述配置文件包。
執(zhí)行單元703,被配置為按照預(yù)先設(shè)置的應(yīng)用部署流程,將所述運(yùn)行文件包及修正后的所述配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,執(zhí)行所述應(yīng)用的安裝過(guò)程。
本申請(qǐng)實(shí)施例通過(guò)上述單元將應(yīng)用的各個(gè)軟件包及其依賴的運(yùn)行時(shí)環(huán)境的安裝包進(jìn)行分離,劃分為運(yùn)行文件包和配置文件包,并預(yù)先針對(duì)不同的運(yùn)行環(huán)境生成配置信息,從而使得在應(yīng)用部署時(shí)可以利用不同運(yùn)行環(huán)境下的配置信息對(duì)配置文件包進(jìn)行修正,從而改變了現(xiàn)有應(yīng)用的所有部署都只能使用同一配置的情況,實(shí)現(xiàn)了應(yīng)用部署時(shí)的參數(shù)動(dòng)態(tài)可配置,進(jìn)而實(shí)現(xiàn)了搭建不同應(yīng)用集群可以指定不同的運(yùn)行時(shí)配置參數(shù),以適應(yīng)不同的業(yè)務(wù)需求,該裝置實(shí)現(xiàn)了應(yīng)用部署的靈活性和動(dòng)態(tài)可定制性。
在另一實(shí)施例中,如圖8所示,獲取單元701可以進(jìn)一步包括:
信息獲取子單元801,被配置為在版本基線數(shù)據(jù)庫(kù)中獲取所述應(yīng)用的所述運(yùn)行文件包的版本基線信息和所述配置文件包的版本基線信息。
地址獲取子單元802,被配置為根據(jù)版本基線信息與云存儲(chǔ)地址之間的對(duì)應(yīng)關(guān)系,獲得所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文件包的云存儲(chǔ)地址。
下載子單元803,被配置為根據(jù)所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文件包的云存儲(chǔ)地址,從云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述運(yùn)行文件包和所述配置文件包。
其中,下載子單元803,具體可以被配置為根據(jù)所述運(yùn)行文件包的云存儲(chǔ)地址及所述配置文件包的云存儲(chǔ)地址,并行從運(yùn)行包云存儲(chǔ)倉(cāng)庫(kù)中下載獲 得所述運(yùn)行文件包及從配置包云存儲(chǔ)倉(cāng)庫(kù)中下載獲得所述配置文件包。
在另一實(shí)施例中,如圖9所示,該裝置還可以包括:
加載單元901,被配置為在執(zhí)行單元703按照預(yù)先設(shè)置的應(yīng)用部署流程,將所述運(yùn)行文件包及修正后的所述配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,執(zhí)行所述應(yīng)用的安裝過(guò)程之前,加載與所述應(yīng)用對(duì)應(yīng)的應(yīng)用部署流程模板。
在另一實(shí)施例中,如圖10所示,所述修正單元702包括:
參數(shù)解析子單元1001,被配置為對(duì)所述配置信息進(jìn)行解析,獲取配置參數(shù)值;
參數(shù)修正子單元1002,被配置為采用所述配置參數(shù)值對(duì)所述配置文件包中默認(rèn)的運(yùn)行配置參數(shù)進(jìn)行修正。
在另一實(shí)施例中,如圖11所示,所述裝置還包括:
分離單元1101,被配置為從軟件包中分離出運(yùn)行文件和配置文件;為所述配置文件配置默認(rèn)的運(yùn)行配置參數(shù);為所述運(yùn)行文件配置版本基線信息生成運(yùn)行文件包,并為所述配置文件配置版本基線信息生成配置文件包;
存儲(chǔ)單元1102,被配置為依據(jù)版本基線信息將所述運(yùn)行文件包和配置文件包分別存儲(chǔ)到存儲(chǔ)倉(cāng)庫(kù)對(duì)應(yīng)的云存儲(chǔ)地址中。
在另一實(shí)施例中,所述執(zhí)行單元703,被配置為通過(guò)異步方式,將所述運(yùn)行文件包及修正后的所述配置文件包批量分發(fā)到應(yīng)用客戶端所在服務(wù)器。
上述配置信息均可以為ini文件。
本申請(qǐng)實(shí)施例還提供了一種電子設(shè)備,包括存儲(chǔ)器和處理器。
處理器與存儲(chǔ)器通過(guò)總線相互連接;總線可以是ISA總線、PCI總線或EISA總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。
其中,存儲(chǔ)器用于存儲(chǔ)一段程序,具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤(pán)存儲(chǔ)器。
處理器用于讀取存儲(chǔ)器中的程序代碼,執(zhí)行以下步驟:
獲取應(yīng)用的運(yùn)行文件包和配置文件包;
獲取預(yù)先生成的配置信息,并根據(jù)所述配置信息修正所述配置文件包;
按照預(yù)先設(shè)置的應(yīng)用部署流程,將所述運(yùn)行文件包及修正后的所述配置文件包分發(fā)到應(yīng)用客戶端所在服務(wù)器,執(zhí)行所述應(yīng)用的安裝過(guò)程。
對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)實(shí)施例的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
在一個(gè)典型的配置中,所述計(jì)算機(jī)設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(pán)(DVD)或其他 光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非持續(xù)性的電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
本申請(qǐng)實(shí)施例是參照根據(jù)本申請(qǐng)實(shí)施例的方法、終端設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本申請(qǐng)實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)實(shí)施例范圍的所有變更和修改。
最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù) 語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者終端設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
以上對(duì)本申請(qǐng)所提供的一種應(yīng)用部署方法和一種應(yīng)用部署裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。