本發(fā)明涉及服務(wù)器集群領(lǐng)域,尤其涉及一種軟件版本管理系統(tǒng)。
背景技術(shù):
隨著系統(tǒng)中處理數(shù)據(jù)的體量越來越大,提供的服務(wù)越來越復(fù)雜,并發(fā)性實(shí)時(shí)性的需求越來越高,整個(gè)系統(tǒng)的往往由一個(gè)復(fù)雜的分布式集群構(gòu)成。分布式集群的服務(wù)組件類型眾多,服務(wù)組件的宿主硬件服務(wù)器分多層集群,在空間和地域上可能廣泛分布,系統(tǒng)內(nèi)各組件存在復(fù)雜的網(wǎng)關(guān)服務(wù)關(guān)系,且一個(gè)硬件服務(wù)器中可能存在多個(gè)組件,一個(gè)組件一般運(yùn)行在多個(gè)硬件服務(wù)器中,而不同的組件之間由不同的開發(fā)團(tuán)隊(duì)進(jìn)行維護(hù)。
在一個(gè)分布式系統(tǒng)中,不同的組件之間需要緊密配合進(jìn)行工作,此時(shí)需要對(duì)各組件的軟件版本進(jìn)行維護(hù),目前,由于組件的分布式特點(diǎn),可以通過運(yùn)維人員去不同的現(xiàn)場(chǎng)對(duì)組件進(jìn)行維護(hù)操作,使得組件的軟件版本維護(hù)操作麻煩,并且,由于需要人為檢測(cè)組件的軟件版本對(duì)不同組件的軟件版本進(jìn)行配合,將可能由于人工檢測(cè)失誤而造成系統(tǒng)的不穩(wěn)定性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種軟件版本管理系統(tǒng),能快速準(zhǔn)確實(shí)現(xiàn)各組件的版本之間的升級(jí)和回溯,帶寬需求低,同時(shí)提高軟件版本管理系統(tǒng)的魯棒性。
本發(fā)明實(shí)施例第一方面公開了一種軟件版本管理系統(tǒng),所述軟件版本管理系統(tǒng)適用于分布式集群系統(tǒng),所述系統(tǒng)包括:
版本數(shù)據(jù)庫(kù),用于分層次存儲(chǔ)所述軟件版本管理系統(tǒng)對(duì)所述網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行軟件版本管理過程中所使用到的版本元信息以及版本數(shù)據(jù);
版本元信息傳播模塊,用于基于所述版本數(shù)據(jù)庫(kù)在所述軟件版本管理系統(tǒng)所管理的網(wǎng)絡(luò)節(jié)點(diǎn)中傳播版本元信息;
版本數(shù)據(jù)傳輸模塊,用于基于所述版本數(shù)據(jù)庫(kù)在所述軟件版本管理系統(tǒng)所管理的網(wǎng)絡(luò)節(jié)點(diǎn)中傳播版本數(shù)據(jù);
以及版本升級(jí)回溯模塊,用于基于所述版本數(shù)據(jù)庫(kù)對(duì)所述網(wǎng)絡(luò)節(jié)點(diǎn)的軟件版本進(jìn)行升級(jí)或回溯。
與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具備以下有益效果:
本發(fā)明實(shí)施例中,通過統(tǒng)一的軟件版本管理系統(tǒng),分層次存儲(chǔ)版本數(shù)據(jù),以及網(wǎng)絡(luò)節(jié)點(diǎn)間的版本數(shù)據(jù)以及元信息的協(xié)同傳輸機(jī)制,能快速準(zhǔn)確實(shí)現(xiàn)各組件的版本之間的升級(jí)和回溯,帶寬需求低,同時(shí)提高軟件版本管理系統(tǒng)的魯棒性。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例公開的一種軟件版本管理系統(tǒng);
圖2是本發(fā)明實(shí)施例提供的一種版本數(shù)據(jù)庫(kù)的結(jié)構(gòu)示意圖;
圖3是本發(fā)明實(shí)施例提供的一種版本元信息數(shù)據(jù)存儲(chǔ)模塊的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實(shí)施例提供的一種版本文件數(shù)據(jù)存儲(chǔ)模塊的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實(shí)施例提供的一種版本統(tǒng)一結(jié)構(gòu)規(guī)范存儲(chǔ)模塊的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實(shí)施例提供的一種版本兼容性檢測(cè)用例庫(kù)存儲(chǔ)模塊的結(jié)構(gòu)示意圖;
圖7是本發(fā)明實(shí)施例提供的一種版本回溯信息數(shù)據(jù)庫(kù)存儲(chǔ)模塊的結(jié)構(gòu)示意圖;
圖8-a是本發(fā)明實(shí)施例提供的一種版本元信息傳播模塊的結(jié)構(gòu)示意圖;
圖8-b是本發(fā)明實(shí)施例提供一種版本元信息傳播格式示意圖;
圖9是本發(fā)明實(shí)施例提供的一種版本數(shù)據(jù)傳輸模塊的結(jié)構(gòu)示意圖;
圖10是本發(fā)明實(shí)施例提供的一種版本升級(jí)回溯模塊的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“包括”和“具有”以及它們?nèi)魏巫冃危鈭D在于覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備沒有限定于已列出的步驟或單元,而是可選地還包括沒有列出的步驟或單元,或可選地還包括對(duì)于這些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
本發(fā)明實(shí)施例提供了一種軟件版本管理系統(tǒng),能快速準(zhǔn)確實(shí)現(xiàn)各組件的版本之間的升級(jí)和回溯,帶寬需求低,同時(shí)提高軟件版本管理系統(tǒng)的魯棒性。
請(qǐng)參閱圖1,圖1是本發(fā)明實(shí)施例公開的一種軟件版本管理系統(tǒng)。如圖1所示,所述軟件版本管理系統(tǒng)100適用于分布式集群系統(tǒng),所述軟件版本管理系統(tǒng)包括:
版本數(shù)據(jù)庫(kù)110,用于分層次存儲(chǔ)所述軟件版本管理系統(tǒng)對(duì)所述網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行軟件版本管理過程中所使用到的版本元信息以及版本數(shù)據(jù)。
在本發(fā)明實(shí)施例中,通過分層次存儲(chǔ)各組件各版本的版本元信息以及版本數(shù)據(jù),從而可以實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中的各組件版本的版本元信息以及版本數(shù)據(jù)進(jìn)行統(tǒng)一管理,以在版本升級(jí)與回溯時(shí),通過調(diào)用該版本數(shù)據(jù)庫(kù)110中的數(shù)據(jù),高效準(zhǔn)確地進(jìn)行版本升級(jí)與回溯。
可選地,參見圖2,圖2是本發(fā)明實(shí)施例提供的一種版本數(shù)據(jù)庫(kù)的結(jié)構(gòu)示意圖。如圖2所示,在本發(fā)明的一個(gè)實(shí)施例中,所述版本數(shù)據(jù)庫(kù)110包括以下至少一種:
版本元信息數(shù)據(jù)存儲(chǔ)模塊111,用于存儲(chǔ)所述多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的所述版本元信息。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,所述版本元信息數(shù)據(jù)庫(kù)模塊111通過分層映射結(jié)構(gòu)存儲(chǔ)版本元信息,所述分層映射結(jié)構(gòu)包括大版本元信息存儲(chǔ)單元和組件版本元信息存儲(chǔ)單元,所述大版本由組件構(gòu)成,所述大版本元信息存儲(chǔ)所述組件版本元信息的鏈接,所述組件版本元信息存儲(chǔ)單元用于存儲(chǔ)所述組件的元信息。
具體地,參見圖3,圖3是本發(fā)明實(shí)施例提供的一種版本元信息數(shù)據(jù)存儲(chǔ)模塊的結(jié)構(gòu)示意圖。如圖3所示,該版本元信息數(shù)據(jù)存儲(chǔ)模塊分層存儲(chǔ)版本元信息,其中版本分為大版本和組件版本,大版本由組件版本構(gòu)成。
其中,大版本元信息存儲(chǔ)組件版本元信息的鏈接,以保持?jǐn)?shù)據(jù)的一致性和節(jié)省存儲(chǔ)空間。
其中,每個(gè)大版本與各組件版本之間存在網(wǎng)狀映射關(guān)系,具體地,同一個(gè)組件版本可由多個(gè)大版本共享,每個(gè)大版本中的組件版本可來自于批次版本組件版本。大版本與組件版本之間,通過元信息映射組成靈活的版本組合。
版本文件數(shù)據(jù)存儲(chǔ)模塊112,用于存儲(chǔ)所述多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的版本文件數(shù)據(jù)。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,所述版本文件數(shù)據(jù)存儲(chǔ)模塊112用于通過版本元信息格式存儲(chǔ)所述組件版本元信息,所述組件版本元信息格式包括版本序列號(hào),版本唯一標(biāo)識(shí)號(hào)以及與所述組件版本元信息對(duì)應(yīng)的版本數(shù)據(jù)的存儲(chǔ)路徑。
具體地,參見圖4,圖4是本發(fā)明實(shí)施例提供的一種版本文件數(shù)據(jù)存儲(chǔ)模塊112的結(jié)構(gòu)示意圖。該示意圖中示出了版本元信息的格式與數(shù)據(jù)映射關(guān)系。
其中,組件版本元信息中的版本序列號(hào)隨著發(fā)布的進(jìn)行依次遞增的版本號(hào)。包括構(gòu)建的日期及構(gòu)建功能版本等信息,從而可以通過版本序列號(hào)判斷出兩個(gè)版本之間的更新關(guān)系。
其中,版本唯一標(biāo)識(shí)號(hào)由唯一標(biāo)識(shí)生成算法生成,例如可以由通用識(shí)別碼(Universally Unique Identifier,UUID)生成算法來生成。
其中,版本數(shù)據(jù)的存儲(chǔ)路徑可能是本地文件系統(tǒng),也可能是網(wǎng)絡(luò)地址。
在本發(fā)明實(shí)施例中,當(dāng)版本數(shù)據(jù)存儲(chǔ)在其它服務(wù)器時(shí),版本數(shù)據(jù)的存儲(chǔ)路徑的所有在本發(fā)明中的版本元信息傳播模塊描述的版本元信息的傳輸機(jī)制得到的互聯(lián)網(wǎng)協(xié)議(Internet Protocol,IP)地址列表。
版本統(tǒng)一結(jié)構(gòu)規(guī)范存儲(chǔ)模塊113,用于存儲(chǔ)所述多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)在進(jìn)行版本升級(jí)時(shí)所使用的數(shù)據(jù)格式規(guī)范。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,所述版本統(tǒng)一結(jié)構(gòu)規(guī)范存儲(chǔ)模塊113用于通過統(tǒng)一結(jié)構(gòu)規(guī)范存儲(chǔ)版本數(shù)據(jù),所述統(tǒng)一結(jié)構(gòu)規(guī)范包括以下部分中的至少一種:
統(tǒng)一配置文件格式、統(tǒng)一配置文件合并準(zhǔn)則、統(tǒng)一升級(jí)腳本、統(tǒng)一部署腳本、統(tǒng)一版本兼容性信息庫(kù)以及統(tǒng)一版本數(shù)據(jù)文件。
參見圖5,圖5示出了本發(fā)明實(shí)施例提供的一種版本統(tǒng)一結(jié)構(gòu)規(guī)范存儲(chǔ)模塊的結(jié)構(gòu)示意圖。在該版本統(tǒng)一結(jié)構(gòu)規(guī)范存儲(chǔ)模塊中,規(guī)定了版本數(shù)據(jù)的統(tǒng)一性結(jié)構(gòu)規(guī)范,規(guī)定不管是組件版本還是大版本的格式標(biāo)準(zhǔn)。為了能夠按統(tǒng)一的框架和流程來執(zhí)行版本的部署,升級(jí),統(tǒng)一規(guī)定所有組件版本必需按如圖5所示的格式構(gòu)成。
其中,圖5中,統(tǒng)一版本數(shù)據(jù)文件包括可執(zhí)行文件,動(dòng)態(tài)庫(kù),數(shù)據(jù)模型等。
其中,統(tǒng)一版本兼容性信息庫(kù)提供以下兩個(gè)方面的信息:
本組件向其它組件提供的接口服務(wù);
本組件依賴于其它組件的接口和服務(wù)。
本發(fā)明實(shí)施例中,通過版本統(tǒng)一結(jié)構(gòu)規(guī)范來存儲(chǔ)各版本數(shù)據(jù),以實(shí)現(xiàn)對(duì)各組件的版本進(jìn)行統(tǒng)一管理。
版本兼容性檢測(cè)用例庫(kù)存儲(chǔ)模塊114,用于存儲(chǔ)所述多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的不同組件間的兼容性信息。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,所述版本兼容性檢測(cè)用例庫(kù)存儲(chǔ)模塊114用于通過兼容性信息條目遍歷不同組件之間的兼容性信息并存儲(chǔ),所述兼容性信息條目包括當(dāng)前組件號(hào)、目標(biāo)組件號(hào)以及目標(biāo)組件接口號(hào),所述兼容性信息條目存儲(chǔ)在多重有向圖結(jié)構(gòu)中,所述多重有向圖結(jié)構(gòu)的邊結(jié)構(gòu)存儲(chǔ)了以下至少一種:兼容性信息條件、用例具體內(nèi)容,所述用例具體內(nèi)容包括輸入、輸出以及驗(yàn)證準(zhǔn)則。
具體地,參見圖6,圖6是本發(fā)明實(shí)施例提供的一種版本兼容性檢測(cè)用例庫(kù)存儲(chǔ)模塊114的結(jié)構(gòu)示意圖。用于實(shí)現(xiàn)自動(dòng)的版本兼容性檢查,以實(shí)現(xiàn)自動(dòng)化的版本升級(jí)、回溯的驗(yàn)證等。其中,在圖6中,每一個(gè)節(jié)點(diǎn)為系統(tǒng)中的一個(gè)組件類型,每一個(gè)組件類型在這個(gè)多重有向圖中的都存在一個(gè)節(jié)點(diǎn)。
在本發(fā)明實(shí)施例中,為了管理各個(gè)版本的功能關(guān)系對(duì)驗(yàn)證這些各組件關(guān)系所對(duì)應(yīng)的用例,提出一種兼容性檢測(cè)用例涉及以下三個(gè)元素:調(diào)用發(fā)起組件、調(diào)用接收組件、調(diào)用的輸入/輸出?;趫D6所示的版本兼容性檢測(cè)用例庫(kù)存儲(chǔ)模塊,通過下述步驟獲取組件版本兼容性信息。
步驟1、由于每個(gè)組件在版本構(gòu)建的過程中,都存儲(chǔ)了兼容性信息,統(tǒng)計(jì)版本庫(kù)中的組件類型總數(shù),每一個(gè)組件類型構(gòu)造一個(gè)有向圖的頂點(diǎn)節(jié)點(diǎn)。
步驟2、遍歷每一個(gè)組件中兼容性信息,對(duì)于一個(gè)組件,遍歷讀取兼容性信息條目。
具體地,讀取兼容性信息條目的信息,得到當(dāng)前組件號(hào)、目標(biāo)組件號(hào)以及目標(biāo)組件接口號(hào),創(chuàng)建一條由當(dāng)前組件網(wǎng)絡(luò)節(jié)點(diǎn)指向目標(biāo)組件網(wǎng)絡(luò)節(jié)點(diǎn)的邊;然后再繼續(xù)讀取兼容性檢測(cè)用例的輸入,輸出,驗(yàn)證準(zhǔn)則等,作為額外的信息存儲(chǔ)的邊結(jié)構(gòu)中,從而基于上述信息用于確定進(jìn)行兼容性檢測(cè)的組件,具體地,在圖6中,TestCase8(3,2,1),即用于表示組件3通過接口1調(diào)用組件2時(shí)的兼容性檢測(cè)?;谏鲜鲂畔?duì)獲取該兼容性信息條目對(duì)應(yīng)的兼容性信息并存儲(chǔ)。重復(fù)進(jìn)行上述步驟直到獲取到當(dāng)前組件所有兼容性信息為止。然后對(duì)每個(gè)組件再基于上述步驟獲取到各個(gè)組件的所有兼容性信息為止。最后得到所有組件的所有兼容性信息進(jìn)行存儲(chǔ)。
在本發(fā)明實(shí)施例中,當(dāng)獲取到各組件間的兼容性信息并統(tǒng)一存儲(chǔ)在版本兼容性檢測(cè)用例庫(kù)存儲(chǔ)模塊,則可以在進(jìn)行版本升級(jí)和回溯時(shí)通過基于該兼容性信息進(jìn)行版本的升級(jí)和回溯,使得能對(duì)組件版本升級(jí)和回溯進(jìn)行統(tǒng)一管理。
版本回溯信息數(shù)據(jù)庫(kù)存儲(chǔ)模塊115,用于存儲(chǔ)所述多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的軟件版本的回溯信息。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,所述版本回溯信息數(shù)據(jù)庫(kù)存儲(chǔ)模塊115用于通過二級(jí)哈希Hash表結(jié)構(gòu)存儲(chǔ)版本回溯信息,所述二級(jí)Hash表結(jié)構(gòu)包括第一級(jí)Hash表以及第二級(jí)Hash表,所述第一級(jí)Hash表用于存儲(chǔ)組件之間的組件識(shí)別符號(hào)對(duì),所述第二級(jí)Hash表用于存儲(chǔ)所述可兼容組件對(duì)對(duì)應(yīng)的兼容性檢測(cè)結(jié)果。
具體地,參見圖7,圖7是本發(fā)明實(shí)施例提供的一種版本回溯信息數(shù)據(jù)庫(kù)存儲(chǔ)模塊115的結(jié)構(gòu)示意圖。參見圖7,在第一級(jí)Hash表結(jié)構(gòu)中,其鍵值為組件標(biāo)識(shí),從而每一個(gè)節(jié)點(diǎn)對(duì)應(yīng)于一對(duì)組件識(shí)別符號(hào)對(duì),假設(shè)在系統(tǒng)中,某兩個(gè)組件的標(biāo)識(shí)號(hào)為ID(x),ID(y),則在第一級(jí)Hash表中存在鍵值為Key(ID(x),ID(y))的Hash表項(xiàng)。如果不存在,在第一級(jí)Hash表中創(chuàng)建該鍵值。
第二級(jí)Hash表結(jié)構(gòu)為某兩個(gè)組件的兩兩之間的兼容性檢測(cè)結(jié)果。組件ID(x)有某個(gè)版本Version(m),組件ID(y)有某個(gè)版本Version(n),則在第一級(jí)Hash表中,鍵值為Key(ID(x),ID(y))的第二級(jí)子Map有鍵值為Key(m,n)的子Hash表項(xiàng),子Hash表項(xiàng)存儲(chǔ)的內(nèi)容為組件ID(x)的版本Version(m)和組件ID(y)的版本Version(n)兼容性檢測(cè)結(jié)果。
可以理解,通過上述二級(jí)Hash表結(jié)構(gòu),可以存儲(chǔ)各個(gè)組件之間兼容性檢測(cè)結(jié)果,從而當(dāng)某個(gè)組件需要進(jìn)行版本回溯回退的時(shí)候,可以快速的得到關(guān)聯(lián)組件的回溯信息,即關(guān)聯(lián)的組件的版本是否需要進(jìn)行回溯及回溯到哪個(gè)版本,提高軟件版本管理效率。
版本元信息傳播模塊120,用于基于所述版本數(shù)據(jù)庫(kù)在所述軟件版本管理系統(tǒng)所管理的網(wǎng)絡(luò)節(jié)點(diǎn)中傳播版本元信息。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,參見圖8-a和圖8-b,圖8-a是本發(fā)明實(shí)施例提供的一種版本元信息傳播模塊的結(jié)構(gòu)示意圖,圖8-b是本發(fā)明實(shí)施例提供一種版本元信息傳播格式示意圖。如圖8-a所示,該版本元信息傳播模塊120,包括:
接收單元121,用于接收其它網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送的版本號(hào)消息,所述版本號(hào)消息包括所述其它網(wǎng)絡(luò)節(jié)點(diǎn)的組件號(hào)、版本號(hào)以及存活時(shí)間(Time to Live,TTL);
存儲(chǔ)單元122,用于當(dāng)所述版本號(hào)消息在所述網(wǎng)絡(luò)節(jié)點(diǎn)的版本數(shù)據(jù)庫(kù)不存在時(shí),保存所述版本號(hào)消息。
在本發(fā)明實(shí)施例中,通過該版本元信息傳播模塊,從而可以實(shí)現(xiàn)在快速高效地在網(wǎng)絡(luò)中傳遞版本元信息,使網(wǎng)絡(luò)中的每一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)都掌握當(dāng)前最新版本信息。
具體地,在本發(fā)明的一個(gè)實(shí)施例中,為了實(shí)現(xiàn)網(wǎng)絡(luò)中的各網(wǎng)絡(luò)節(jié)點(diǎn)都獲取版本元信息,可以首先由版本發(fā)布者把新的版本的元信息及其相關(guān)的數(shù)據(jù)文件和其它必要的信息形成版本號(hào)消息,例如版本元信息數(shù)據(jù)、版本文件數(shù)據(jù)以及版本統(tǒng)一結(jié)構(gòu)規(guī)范等部分的內(nèi)容,設(shè)這些被注入版本號(hào)信息的節(jié)點(diǎn)為源節(jié)點(diǎn);然后源節(jié)點(diǎn)在自己所有網(wǎng)絡(luò)接口上廣播新的版本號(hào)消息,從而各中間節(jié)點(diǎn)將接收到該版本號(hào)信息,以獲取到新的版本的元信息。當(dāng)中間節(jié)點(diǎn)通過接收單元121接收到該版本號(hào)信息時(shí),則通過檢查該中間節(jié)點(diǎn)中是否存儲(chǔ)有該版本號(hào)信息中的內(nèi)容,若未存儲(chǔ),則保存。從而實(shí)現(xiàn)將新的版本的元信息在各網(wǎng)絡(luò)節(jié)點(diǎn)中的傳播。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,為了盡可以節(jié)約帶寬,在開始階段,源節(jié)點(diǎn)僅抽取版本號(hào)消息中的版本號(hào)向外開始廣播傳遞過程。
更進(jìn)一步,具體地,在本發(fā)明的一個(gè)實(shí)施例中,中間節(jié)點(diǎn)判斷如果曾經(jīng)收到過該版本號(hào)消息消息,也即版本號(hào)消息中的組件號(hào)和版本號(hào)相同,直接結(jié)束,如果沒有收到過,則首先會(huì)在自己的版本元信息數(shù)據(jù)存儲(chǔ)模塊記錄該版本號(hào)消息中的內(nèi)容,然后再把該版本元消息中的TTL減1,如果結(jié)果為0,則不時(shí)行轉(zhuǎn)發(fā),直接結(jié)束,如果TTL不為0,則中間節(jié)點(diǎn)向這條版本元消息進(jìn)入的網(wǎng)絡(luò)接口以外的網(wǎng)絡(luò)接口進(jìn)行轉(zhuǎn)發(fā),消息按該機(jī)制在網(wǎng)絡(luò)是傳播,直到所有節(jié)點(diǎn)都收到或消息的TTL減為0為止。從而使得網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都知道當(dāng)集群中,每個(gè)軟件的組件的最新版本是什么,及節(jié)點(diǎn)自己是否有這些版本的本地拷貝。
更進(jìn)一步,可選地,各網(wǎng)絡(luò)節(jié)點(diǎn)將會(huì)以比較低的頻度,向網(wǎng)絡(luò)中其它網(wǎng)絡(luò)節(jié)點(diǎn)廣播自己掌握有的所有的組件的版本號(hào)信息,該版本號(hào)信息包括最新和歷史的版本號(hào),消息的傳輸過程與新注入的版本的信息的傳輸過程基本一致。不再詳細(xì)敘述通過這個(gè)通過,可以達(dá)到兩個(gè)作用:
可以理解,通過上述過程,可以使得在網(wǎng)絡(luò)中的每個(gè)結(jié)點(diǎn),都掌握了所有在網(wǎng)絡(luò)內(nèi)存在的各組件的版本號(hào)信息;以及使得新加入網(wǎng)絡(luò)中的節(jié)點(diǎn),通過一段時(shí)間的監(jiān)聽后,也可以掌握在網(wǎng)絡(luò)中存在的組件版本信息,以實(shí)現(xiàn)對(duì)各組件版本元信息的傳播。以進(jìn)一步實(shí)現(xiàn)對(duì)各組件的軟件版本的統(tǒng)一管理。
其中,版本數(shù)據(jù)傳輸模塊130,用于基于所述版本數(shù)據(jù)庫(kù)在所述軟件版本管理系統(tǒng)所管理的網(wǎng)絡(luò)節(jié)點(diǎn)中傳播版本數(shù)據(jù)。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,參見圖9,圖9是本發(fā)明實(shí)施例提供的一種版本數(shù)據(jù)傳輸模塊130的結(jié)構(gòu)示意圖。如圖9所示,該版本數(shù)據(jù)傳輸模塊130包括:
接收單元131,用于接收其它網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送的版本數(shù)據(jù)傳輸請(qǐng)求,所述版本數(shù)據(jù)傳輸請(qǐng)求包括版本號(hào)標(biāo)識(shí),所述版本數(shù)據(jù)傳輸請(qǐng)求用于所述其它網(wǎng)絡(luò)節(jié)點(diǎn)向所述網(wǎng)絡(luò)節(jié)點(diǎn)請(qǐng)求傳輸與所述版本號(hào)標(biāo)識(shí)對(duì)應(yīng)的版本數(shù)據(jù),所述版本號(hào)標(biāo)識(shí)包括組件標(biāo)識(shí)和版本標(biāo)識(shí);
發(fā)送單元132,用于在所述網(wǎng)絡(luò)節(jié)點(diǎn)包括與所述版本號(hào)標(biāo)識(shí)對(duì)應(yīng)的版本數(shù)據(jù)時(shí),向所述其它網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送所述版本數(shù)據(jù)。
具體地,1、網(wǎng)絡(luò)中的每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)根據(jù)自己掌握的版本元信息數(shù)據(jù)、版本文件數(shù)據(jù)以及版本統(tǒng)一結(jié)構(gòu)規(guī)范,向網(wǎng)絡(luò)中其它網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)起某組件某版本數(shù)據(jù)傳輸請(qǐng)求,以實(shí)現(xiàn)對(duì)版本數(shù)據(jù)的共享,在該版本數(shù)據(jù)傳輸請(qǐng)求中可設(shè)置所傳輸?shù)臄?shù)據(jù)格式為Data(Model(x)Version(y)),其中,Model(x)用于表示某組件,Version(y)用于表示某版本。
2、網(wǎng)絡(luò)節(jié)點(diǎn)將按統(tǒng)一約定的規(guī)則,例如按固定大小切塊的規(guī)則,對(duì)Data(Model(x)Version(y))進(jìn)行切塊,設(shè)得到的塊數(shù)為(1,m),并將(1,m)進(jìn)行批次劃分,設(shè)為(1,n),則每批次為m*n塊數(shù)據(jù)。
3、網(wǎng)絡(luò)節(jié)點(diǎn)將根據(jù)上述分塊按批次發(fā)起傳輸,它一次把當(dāng)前批次m*n塊同時(shí)向外發(fā)送請(qǐng)求,請(qǐng)求有這些數(shù)據(jù)塊的網(wǎng)絡(luò)節(jié)點(diǎn)回應(yīng)它的請(qǐng)求。具體地,網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)起請(qǐng)求前,根據(jù)版本元信息傳播模塊中掌握的信息,根據(jù)一次的時(shí)間的退避,也即TTL減1。
可選地,上述過程中,由于只有少數(shù)節(jié)點(diǎn)擁有Data(Model(x)Version(y))的本地版本,所以大部分節(jié)點(diǎn)都會(huì)發(fā)起傳輸?shù)恼?qǐng)求操作。
當(dāng)某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)通過接收單元131接收到版本數(shù)據(jù)傳輸請(qǐng)求后,將檢查自己是否掌握有相關(guān)的數(shù)據(jù)塊,如果掌握,則通過發(fā)送單元132向發(fā)送該版本數(shù)據(jù)傳輸請(qǐng)求的網(wǎng)絡(luò)節(jié)點(diǎn)源請(qǐng)求節(jié)點(diǎn)回復(fù)自己愿意提供數(shù)據(jù)傳輸服務(wù)的響應(yīng)消息,同時(shí)該網(wǎng)絡(luò)節(jié)點(diǎn)向遠(yuǎn)離消息源節(jié)點(diǎn)的方向轉(zhuǎn)發(fā)此版本數(shù)據(jù)傳輸請(qǐng)求。如果該網(wǎng)絡(luò)節(jié)點(diǎn)沒有這樣的方向,則不轉(zhuǎn)發(fā)此消息。從而實(shí)現(xiàn)網(wǎng)絡(luò)中各網(wǎng)絡(luò)節(jié)點(diǎn)都擁有升級(jí)版本的版本數(shù)據(jù)。同時(shí),通過上述機(jī)制,可以節(jié)約帶寬。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)發(fā)起版本數(shù)據(jù)傳輸請(qǐng)求的網(wǎng)絡(luò)節(jié)點(diǎn)收到多個(gè)響應(yīng)請(qǐng)求時(shí),會(huì)根據(jù)TTL時(shí)延選擇最佳的網(wǎng)絡(luò)節(jié)點(diǎn)請(qǐng)求版本數(shù)據(jù)。以減少無用的版本數(shù)據(jù)傳輸。
可以理解,通過上述過程,每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)都可以掌握最新版本的版本數(shù)據(jù),以實(shí)現(xiàn)對(duì)各組件的軟件版本的統(tǒng)一管理。
其中,版本升級(jí)回溯模塊140,用于基于所述版本數(shù)據(jù)庫(kù)對(duì)所述網(wǎng)絡(luò)節(jié)點(diǎn)的軟件版本進(jìn)行升級(jí)或回溯。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,參見圖10,圖10是本發(fā)明實(shí)施例提供的一種版本升級(jí)回溯模塊140的結(jié)構(gòu)示意圖。如圖10所示,該版本升級(jí)回溯模塊140包括:
檢測(cè)單元141,用于確定待升級(jí)版本或待回溯版本的組件號(hào)、版本號(hào),并基于所述版本兼容性檢測(cè)用例庫(kù)存儲(chǔ)模塊進(jìn)行兼容性測(cè)試;
升級(jí)回溯單元142,用于在所述兼容性測(cè)試通過時(shí),對(duì)所述網(wǎng)絡(luò)節(jié)點(diǎn)升級(jí)至待升級(jí)版本或回溯至待回溯版本。
具體地,在本發(fā)明實(shí)施例中,由于每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)都記錄了每個(gè)組件每個(gè)版本的版本兼容性檢測(cè)用例庫(kù)及版本回溯信息數(shù)據(jù)庫(kù),所以可具體通過以下過程進(jìn)行版本升級(jí):
1、網(wǎng)絡(luò)節(jié)點(diǎn)通過檢測(cè)單元141檢測(cè)當(dāng)前網(wǎng)絡(luò)節(jié)點(diǎn)所有的組件的待升級(jí)的版本,確定當(dāng)前次升級(jí)所涉及的組件版本及具體的版本號(hào);
2、通過版本元信息數(shù)據(jù)存儲(chǔ)模塊維護(hù)版本的元數(shù)據(jù)信息,創(chuàng)建一個(gè)新的大版本號(hào),生成大版本號(hào)的一個(gè)唯一的標(biāo)識(shí)號(hào),根據(jù)待升級(jí)組件的版本號(hào),不升級(jí)組件的版本號(hào)等信息,維護(hù)當(dāng)前在版本號(hào)的組件版本映射信息。參見本發(fā)明專利A1所描述的的元信息存儲(chǔ)結(jié)構(gòu)。
3、網(wǎng)絡(luò)節(jié)點(diǎn)再進(jìn)行備份部署,將待升級(jí)的版本通過版本中的config/update/deloy等標(biāo)準(zhǔn)化腳本部署為一個(gè)與當(dāng)前運(yùn)行的版本并行運(yùn)行的一個(gè)復(fù)制運(yùn)行實(shí)例。
4、網(wǎng)絡(luò)節(jié)點(diǎn)在這個(gè)復(fù)制的運(yùn)行實(shí)現(xiàn)上利用版本兼容性檢測(cè)用例庫(kù)存儲(chǔ)模塊檢測(cè)兼容性檢測(cè)用例庫(kù)。
5、可選地,在本發(fā)明的一個(gè)實(shí)施例中,如果通過兼容性檢測(cè),則進(jìn)行版本的實(shí)際熱切換,使當(dāng)前的版本實(shí)際上線。同時(shí)在版本回溯信息數(shù)據(jù)庫(kù)存儲(chǔ)模塊所描述的回溯信息數(shù)據(jù)庫(kù)中記錄已經(jīng)完成的兼容性檢測(cè)信息。
6、可選地,在本發(fā)明的另一個(gè)實(shí)施例中,如果沒有通過兼容性檢測(cè),則中止此次升級(jí),并清除掉復(fù)制兼容性檢測(cè)環(huán)境的所有組件實(shí)例。并行相關(guān)的記錄和報(bào)錯(cuò)。
可以理解,通過上述步驟,可以實(shí)現(xiàn)對(duì)版本的升級(jí)與回溯。
可以看出,本發(fā)明實(shí)施例提供的技術(shù)方案中,通過統(tǒng)一的軟件版本管理系統(tǒng),分層次存儲(chǔ)版本數(shù)據(jù),以及網(wǎng)絡(luò)節(jié)點(diǎn)間的版本數(shù)據(jù)以及元信息的協(xié)同傳輸機(jī)制,能快速準(zhǔn)確實(shí)現(xiàn)各組件的版本之間的升級(jí)和回溯,帶寬需求低,同時(shí)提高軟件版本管理系統(tǒng)的魯棒性。
需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置,可通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)器中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)器中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例方法的全部或部分步驟。而前述的存儲(chǔ)器包括:U盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)器中,存儲(chǔ)器可以包括:閃存盤、只讀存儲(chǔ)器(英文:Read-Only Memory,簡(jiǎn)稱:ROM)、隨機(jī)存取器(英文:Random Access Memory,簡(jiǎn)稱:RAM)、磁盤或光盤等。
以上對(duì)本發(fā)明實(shí)施例進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上上述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。