本發(fā)明涉及服務(wù)器系統(tǒng)運(yùn)維領(lǐng)域,具體涉及一種基于守護(hù)進(jìn)程的服務(wù)器端應(yīng)用發(fā)布監(jiān)控方法及裝置。
背景技術(shù):
守護(hù)進(jìn)程(運(yùn)行程序),也就是通常說(shuō)的daemon進(jìn)程。它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。linux大多數(shù)服務(wù)器進(jìn)程就是用守護(hù)進(jìn)程實(shí)現(xiàn)的,例如web服務(wù)。守護(hù)進(jìn)程常常在系統(tǒng)引導(dǎo)裝入時(shí)啟動(dòng),在系統(tǒng)關(guān)閉時(shí)終止。守護(hù)進(jìn)程最大的特點(diǎn)是運(yùn)行在后臺(tái),與終端無(wú)連接,除非特殊情況下,用戶(hù)不能操作守護(hù)進(jìn)程。在linux中,每一個(gè)系統(tǒng)與用戶(hù)進(jìn)行交流的界面稱(chēng)為終端,每一個(gè)從此終端開(kāi)始運(yùn)行的進(jìn)程都會(huì)依附于這個(gè)終端,這個(gè)終端就稱(chēng)為這些進(jìn)程的控制終端,當(dāng)控制終端被關(guān)閉時(shí),相應(yīng)的進(jìn)程都會(huì)自動(dòng)關(guān)閉。但是守護(hù)進(jìn)程卻能夠突破這種限制,它從被執(zhí)行開(kāi)始運(yùn)轉(zhuǎn),直到整個(gè)系統(tǒng)關(guān)閉時(shí)才退出。如果想讓某個(gè)進(jìn)程不因?yàn)橛脩?hù)或終端或其他地變化而受到影響,那么就必須把這個(gè)進(jìn)程變成一個(gè)守護(hù)進(jìn)程
隨著互聯(lián)網(wǎng)技術(shù)的蓬勃發(fā)展,為了滿(mǎn)足客戶(hù)不斷變化的需求,互聯(lián)網(wǎng)系統(tǒng)越來(lái)越多的呈現(xiàn)出了如下的態(tài)勢(shì):
(1)頻繁的發(fā)布周期:用戶(hù)需求的不斷變化,促使著互聯(lián)網(wǎng)系統(tǒng)不斷更新,發(fā)布新版本。頻繁的迭代無(wú)疑給運(yùn)維工作增加工作量。傳統(tǒng)的發(fā)布方式經(jīng)過(guò)”編譯→配置文件修改→發(fā)布→啟動(dòng)”;由于每個(gè)環(huán)節(jié)都需要運(yùn)維人員參與,促使我們對(duì)運(yùn)維人員在線上環(huán)境認(rèn)知度以及細(xì)致度等方面提出更高要求。加之目前越來(lái)越多的互聯(lián)網(wǎng)系統(tǒng)實(shí)施多地部署、多版本部署,完全依靠運(yùn)維人員進(jìn)行管理將會(huì)變得十分困難。
(2)故障發(fā)現(xiàn)及時(shí)性:互聯(lián)網(wǎng)時(shí)代,用戶(hù)的訪問(wèn)已經(jīng)不局限于某一時(shí)間段,或者某一地點(diǎn)。在任何時(shí)刻,系統(tǒng)故障都會(huì)對(duì)用戶(hù)的訪問(wèn)造成不可估量的后果,如何及時(shí)了解問(wèn)題并及時(shí)響應(yīng)解決成為關(guān)鍵。大多數(shù)系統(tǒng)會(huì)根據(jù)業(yè)務(wù)情況定制報(bào)警監(jiān)控,但是在面對(duì)多條產(chǎn)品線,重復(fù)定制監(jiān)控以及報(bào)警功能將會(huì)浪費(fèi)很多開(kāi)發(fā)資源。而提供一條通用的、及時(shí)的且安全的監(jiān)控報(bào)警功能將極大地提高系統(tǒng)工作效率,并減少成本。
在規(guī)模較大的互聯(lián)網(wǎng)公司當(dāng)中,運(yùn)維會(huì)涉及到不同類(lèi)型的項(xiàng)目發(fā)布,例如web項(xiàng)目的發(fā)布,服務(wù)化項(xiàng)目的發(fā)布,基礎(chǔ)服務(wù)的發(fā)布,不同的項(xiàng)目由不同團(tuán)隊(duì)開(kāi)發(fā),可能會(huì)提供不同的部署方案,這對(duì)集中化的運(yùn)維來(lái)說(shuō)無(wú)疑會(huì)是一個(gè)很耗費(fèi)工作量且混亂的方法。
關(guān)于現(xiàn)有的技術(shù)問(wèn)題,專(zhuān)利“一種應(yīng)用發(fā)布方法及系統(tǒng)”(受理號(hào)cn201410601878.0)提出一種解決方案,該發(fā)明提供一種應(yīng)用發(fā)布方法及系統(tǒng),具體步驟:步驟1:獲取制作完成的應(yīng)用,將應(yīng)用進(jìn)行轉(zhuǎn)譯,得到至少一個(gè)分別應(yīng)用于不同系統(tǒng)平臺(tái)的、不同框架類(lèi)型的待發(fā)布應(yīng)用;步驟2:根據(jù)用戶(hù)輸入的發(fā)布信息和目標(biāo)發(fā)布范圍,得到入?yún)?bào)文;步驟3:根據(jù)入?yún)?bào)文,在目標(biāo)發(fā)布范圍內(nèi)將不同類(lèi)型的待發(fā)布應(yīng)用分別進(jìn)行發(fā)布;步驟4:在目標(biāo)發(fā)布范圍內(nèi)對(duì)待發(fā)布應(yīng)用進(jìn)行測(cè)試,當(dāng)測(cè)試通過(guò)時(shí),執(zhí)行步驟5,否則,執(zhí)行步驟1;步驟5:當(dāng)測(cè)試完成時(shí),將應(yīng)用發(fā)布到應(yīng)用發(fā)布平臺(tái)。該發(fā)明針對(duì)同一技術(shù)平臺(tái)制作的應(yīng)用,可同時(shí)發(fā)布到多個(gè)省份;在管理中心,可以對(duì)發(fā)布的應(yīng)用進(jìn)行pc在線測(cè)試;大大地縮短了應(yīng)用的審核周期,降低了制作的成本;實(shí)現(xiàn)了業(yè)務(wù)接口的透明引入。然而,該發(fā)明僅是針對(duì)特殊應(yīng)用場(chǎng)景,并不具備普適性和通用性,也不能有效地對(duì)已發(fā)布應(yīng)用進(jìn)行監(jiān)控管理。
技術(shù)實(shí)現(xiàn)要素:
為解決現(xiàn)有技術(shù)的局限性,本發(fā)明目的是提供一種基于守護(hù)進(jìn)程的服務(wù)器端應(yīng)用發(fā)布及監(jiān)控方法,本發(fā)明還在于,通過(guò)守護(hù)進(jìn)程發(fā)布項(xiàng)目和監(jiān)控項(xiàng)目實(shí)例的進(jìn)行,并充分結(jié)合maven的項(xiàng)目創(chuàng)建特性,使預(yù)發(fā)布的任一項(xiàng)目在非生產(chǎn)環(huán)境中經(jīng)編譯和打包后發(fā)至遠(yuǎn)程maven倉(cāng)庫(kù),maven倉(cāng)庫(kù)就是放置所有jar文件(war,zip,pom等等)的地方,所有maven項(xiàng)目可從同一個(gè)maven倉(cāng)庫(kù)中獲取自己所需要的依賴(lài)jar,節(jié)省了磁盤(pán)資源。maven倉(cāng)庫(kù)中所有的jar都有其自己的坐標(biāo),該坐標(biāo)告訴maven它的組id,構(gòu)件id,版本;由守護(hù)進(jìn)程控制及執(zhí)行某項(xiàng)目在maven倉(cāng)庫(kù)中的遷移、按標(biāo)準(zhǔn)構(gòu)建及對(duì)外發(fā)布;發(fā)布后的項(xiàng)目實(shí)例執(zhí)行情況由守護(hù)進(jìn)程持續(xù)地、動(dòng)態(tài)地獲取監(jiān)控?cái)?shù)據(jù),以提供統(tǒng)一接口的方式,降低監(jiān)控系統(tǒng)和項(xiàng)目實(shí)例間的復(fù)雜度,減少運(yùn)維人員的手工參與,實(shí)現(xiàn)發(fā)布及監(jiān)控的標(biāo)準(zhǔn)化和方便擴(kuò)展,有效支撐運(yùn)維工作的及時(shí)及高效;
本發(fā)明的技術(shù)方案為:一種基于守護(hù)進(jìn)程的服務(wù)器端應(yīng)用發(fā)布及監(jiān)控方法,具體步驟有:
步驟1:服務(wù)器端預(yù)發(fā)布的項(xiàng)目經(jīng)編譯后,以壓縮包形式上傳至在遠(yuǎn)程maven庫(kù);同時(shí)按照守護(hù)進(jìn)程定義的規(guī)則編制該項(xiàng)目的驅(qū)動(dòng)信息,所述驅(qū)動(dòng)信息包括:項(xiàng)目配置描述文件、基于守護(hù)進(jìn)程的驅(qū)動(dòng)實(shí)現(xiàn)規(guī)則、項(xiàng)目構(gòu)建的maven腳本;
所述項(xiàng)目配置描述文件是預(yù)先定義的描述性文件,格式為xml,記錄了項(xiàng)目由maven倉(cāng)庫(kù)發(fā)至服務(wù)器時(shí)需配置的各類(lèi)參數(shù),包括守護(hù)進(jìn)程運(yùn)行參數(shù)和項(xiàng)目自身的配置參數(shù);
特別地,項(xiàng)目配置描述文件只負(fù)責(zé)對(duì)參數(shù)進(jìn)行描述,無(wú)需給參數(shù)賦值,參數(shù)的賦值動(dòng)作在提交守護(hù)進(jìn)程進(jìn)行發(fā)布的時(shí)候再賦予。
所述基于守護(hù)進(jìn)程的驅(qū)動(dòng)實(shí)現(xiàn)規(guī)則,本質(zhì)上是用于預(yù)發(fā)布的項(xiàng)目能被守護(hù)進(jìn)程識(shí)別的接口,包括項(xiàng)目啟動(dòng)的腳本路徑、項(xiàng)目停止的腳本路徑、項(xiàng)目的探針端口、項(xiàng)目的插件目錄等;通過(guò)上述接口,守護(hù)進(jìn)程能對(duì)項(xiàng)目發(fā)布及啟停進(jìn)行管理;
所述項(xiàng)目構(gòu)建的maven腳本被應(yīng)用于按照maven配置方式構(gòu)建項(xiàng)目腳本,包括指定需從maven倉(cāng)庫(kù)中遷移的項(xiàng)目版本,指定項(xiàng)目構(gòu)建在服務(wù)器內(nèi)指定目錄中,指定需要被替換的配置文件,項(xiàng)目權(quán)限;
步驟2:待該項(xiàng)目當(dāng)前需要在服務(wù)器上發(fā)布時(shí),將該項(xiàng)目的驅(qū)動(dòng)信息提交給守護(hù)進(jìn)程,由守護(hù)進(jìn)程控制項(xiàng)目發(fā)布流程及發(fā)布后的持續(xù)監(jiān)控;其中,驅(qū)動(dòng)信息以jar包形式提供。
步驟3:守護(hù)進(jìn)程根據(jù)驅(qū)動(dòng)信息及部署配置文件,從maven倉(cāng)庫(kù)中遷移當(dāng)前指定發(fā)布的項(xiàng)目,按照maven配置標(biāo)準(zhǔn)構(gòu)建項(xiàng)目,具體包括:
步驟3-1:守護(hù)進(jìn)程接收到項(xiàng)目驅(qū)動(dòng)信息jar包,通過(guò)解析驅(qū)動(dòng)信息jar包,提取項(xiàng)目配置描述文件、基于守護(hù)進(jìn)程的驅(qū)動(dòng)實(shí)現(xiàn)、項(xiàng)目構(gòu)建的maven腳本;
步驟3-4:守護(hù)進(jìn)程根據(jù)項(xiàng)目配置描述文件的內(nèi)容,提取預(yù)先配置的相關(guān)項(xiàng)目發(fā)布的參數(shù)和守護(hù)進(jìn)程運(yùn)行參數(shù),構(gòu)建能被maven識(shí)別的項(xiàng)目發(fā)布配置文件即profile文件(profile文件做一個(gè)解釋即可);
步驟3-5:守護(hù)進(jìn)程根據(jù)項(xiàng)目構(gòu)建的maven腳本,從maven倉(cāng)庫(kù)中遷移預(yù)發(fā)布項(xiàng)目的壓縮包至指定發(fā)布服務(wù)器內(nèi)指定目錄中;同時(shí)結(jié)合maven腳本和項(xiàng)目發(fā)布配置文件即profile文件,形成最終預(yù)發(fā)布項(xiàng)目的配置參數(shù),至此,通過(guò)利用maven倉(cāng)庫(kù),項(xiàng)目構(gòu)建完畢;
步驟4:守護(hù)進(jìn)程按照預(yù)發(fā)布項(xiàng)目的配置參數(shù),提取項(xiàng)目壓縮包,執(zhí)行項(xiàng)目在服務(wù)器內(nèi)的發(fā)布;
步驟5:守護(hù)進(jìn)程根據(jù)啟動(dòng)指令,對(duì)已發(fā)布的項(xiàng)目執(zhí)行啟動(dòng)操作,并針對(duì)各機(jī)器內(nèi)項(xiàng)目實(shí)例的運(yùn)行情況實(shí)施持續(xù)監(jiān)控,具體有:
步驟5-1:監(jiān)控系統(tǒng)向需要監(jiān)控的項(xiàng)目實(shí)例所在機(jī)器的守護(hù)進(jìn)程發(fā)起監(jiān)控請(qǐng)求;
步驟5-2:守護(hù)進(jìn)程收到監(jiān)控應(yīng)用發(fā)起的請(qǐng)求,判斷請(qǐng)求需要發(fā)送到哪一個(gè)項(xiàng)目實(shí)例,然后從守護(hù)進(jìn)程管理的項(xiàng)目實(shí)例中確認(rèn),并向守護(hù)進(jìn)程提供監(jiān)控接口,通過(guò)該監(jiān)控接口轉(zhuǎn)發(fā)項(xiàng)目實(shí)例的監(jiān)控請(qǐng)求;
步驟5-3:項(xiàng)目實(shí)例收到守護(hù)進(jìn)程轉(zhuǎn)發(fā)來(lái)監(jiān)控請(qǐng)求,根據(jù)請(qǐng)求內(nèi)容獲取負(fù)責(zé)監(jiān)控的插件,獲取需要監(jiān)控的數(shù)據(jù)。
步驟5-4:實(shí)例將獲取到的監(jiān)控?cái)?shù)據(jù)返回給守護(hù)進(jìn)程;
步驟5-5:守護(hù)進(jìn)程將收到的監(jiān)控?cái)?shù)據(jù)返回給監(jiān)控系統(tǒng);
特別地,在監(jiān)控項(xiàng)目實(shí)例的過(guò)程中,守護(hù)進(jìn)程充當(dāng)?shù)氖且粋€(gè)數(shù)據(jù)轉(zhuǎn)發(fā)的角色,在監(jiān)控應(yīng)用和實(shí)例之間,充當(dāng)了一個(gè)對(duì)外的統(tǒng)一接口,降低了監(jiān)控應(yīng)用需要維護(hù)和實(shí)例之間的關(guān)系的復(fù)雜度;
本發(fā)明的有益效果:
(1)本發(fā)明通過(guò)守護(hù)進(jìn)程控制發(fā)布項(xiàng)目和監(jiān)控項(xiàng)目實(shí)例的進(jìn)行,并充分結(jié)合maven的項(xiàng)目創(chuàng)建特性,使不同種類(lèi)項(xiàng)目的發(fā)布方式得到統(tǒng)一,減少運(yùn)維人員的手工參與,有效支撐運(yùn)維工作的及時(shí)及高效;
(2)本發(fā)明實(shí)現(xiàn)在項(xiàng)目發(fā)布后,由守護(hù)進(jìn)程通過(guò)提供監(jiān)控接口,持續(xù)監(jiān)控各項(xiàng)目實(shí)例的運(yùn)行,降低因不同監(jiān)控需求而帶來(lái)的監(jiān)控方式復(fù)雜度,提高了項(xiàng)目實(shí)例的監(jiān)控效率;
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例中基于守護(hù)進(jìn)程的服務(wù)器端應(yīng)用發(fā)布系統(tǒng)結(jié)構(gòu)示意圖;
圖2是傳統(tǒng)服務(wù)器應(yīng)用發(fā)布(上圖)和基于maven倉(cāng)庫(kù)的服務(wù)器應(yīng)用發(fā)布對(duì)比圖(下圖);
圖3是本發(fā)明實(shí)施例中一種基于守護(hù)進(jìn)程的服務(wù)器端應(yīng)用發(fā)布流程示意圖;
圖4是本發(fā)明實(shí)施例中一種基于守護(hù)進(jìn)程的應(yīng)用實(shí)例監(jiān)控結(jié)構(gòu)示意圖;
圖5是本發(fā)明實(shí)施例中一種基于守護(hù)進(jìn)程的監(jiān)控流程圖。
具體實(shí)施例
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面對(duì)本發(fā)明實(shí)施例中一種基于守護(hù)進(jìn)程的服務(wù)器端應(yīng)用發(fā)布監(jiān)控方法中所涉及的一些術(shù)語(yǔ)做簡(jiǎn)單解釋?zhuān)?/p>
所述項(xiàng)目配置描述文件是預(yù)先定義的描述性文件,格式為xml,記錄了項(xiàng)目由maven倉(cāng)庫(kù)發(fā)至服務(wù)器時(shí)需配置的各類(lèi)參數(shù),包括守護(hù)進(jìn)程運(yùn)行參數(shù)和項(xiàng)目自身的配置參數(shù);
所述基于守護(hù)進(jìn)程的驅(qū)動(dòng)實(shí)現(xiàn),本質(zhì)上是用于預(yù)發(fā)布的項(xiàng)目能被守護(hù)進(jìn)程識(shí)別的接口,包括項(xiàng)目啟動(dòng)的腳本路徑、項(xiàng)目停止的腳本路徑、項(xiàng)目的探針端口、項(xiàng)目的插件目錄等。通過(guò)上述接口,守護(hù)進(jìn)程能對(duì)項(xiàng)目發(fā)布及啟停進(jìn)行管理;
所述項(xiàng)目構(gòu)建的maven腳本被應(yīng)用于按照maven配置方式構(gòu)建項(xiàng)目腳本,包括指定需從maven倉(cāng)庫(kù)中遷移的項(xiàng)目版本,指定項(xiàng)目構(gòu)建在服務(wù)器內(nèi)指定目錄中,指定需要被替換的配置文件,項(xiàng)目權(quán)限;
為了讓本技術(shù)領(lǐng)域的人能夠更好的理解本申請(qǐng)實(shí)例中的技術(shù)方案,下面結(jié)合附圖對(duì)本申請(qǐng)實(shí)施中的本發(fā)明的技術(shù)方案做進(jìn)一步的說(shuō)明。
圖1是本發(fā)明實(shí)施例中基于守護(hù)進(jìn)程的服務(wù)器端應(yīng)用發(fā)布系統(tǒng)結(jié)構(gòu)示意圖,具體包括:接口層101、分發(fā)模塊102、配置模塊103、實(shí)例管理模塊104、機(jī)器監(jiān)控模塊105、實(shí)例監(jiān)控模塊106;守護(hù)進(jìn)程通過(guò)接口層101與外部應(yīng)用通信,分發(fā)模塊用于接收并處理從接口層傳遞的內(nèi)容;實(shí)例模塊104中記錄了由守護(hù)進(jìn)程管理的所有項(xiàng)目實(shí)例,并控制實(shí)例的發(fā)布、啟動(dòng)及停止;守護(hù)進(jìn)程的配置信息及其所管理的項(xiàng)目實(shí)例的配置信息由配置模塊103管理;守護(hù)進(jìn)程通過(guò)部署機(jī)器監(jiān)控模塊105,負(fù)責(zé)對(duì)機(jī)器的系統(tǒng)信息進(jìn)行監(jiān)控,比如cpu、內(nèi)存、磁盤(pán)等等;為獲取多種類(lèi)機(jī)器監(jiān)控
守護(hù)進(jìn)程通過(guò)部署實(shí)例監(jiān)控模塊106,用于對(duì)其管理的項(xiàng)目實(shí)例提供監(jiān)控;
插件模塊是基于java的classloader機(jī)制實(shí)現(xiàn)的動(dòng)態(tài)加載功能,該功能可以在不跳轉(zhuǎn)守護(hù)進(jìn)程的情況下,加載追加的相關(guān)模塊,只需要相關(guān)模塊以jar包的形式提供即可。
圖2是傳統(tǒng)服務(wù)器應(yīng)用發(fā)布流程和基于守護(hù)進(jìn)程的服務(wù)器應(yīng)用發(fā)布流程對(duì)比圖,傳統(tǒng)的項(xiàng)目發(fā)布經(jīng)編譯服務(wù)器編譯后,直接發(fā)送至生產(chǎn)服務(wù)器進(jìn)行發(fā)布,整個(gè)過(guò)程需要運(yùn)維人員參與控制;且不同項(xiàng)目的發(fā)布需要配置不同的發(fā)布方式,不同項(xiàng)目的監(jiān)控也會(huì)有不同配置;在本發(fā)明的基于守護(hù)進(jìn)程的服務(wù)器應(yīng)用發(fā)布過(guò)程中,任意一種項(xiàng)目(比如web項(xiàng)目的發(fā)布,服務(wù)化項(xiàng)目的發(fā)布,基礎(chǔ)服務(wù)的發(fā)布)經(jīng)編譯后,先由守護(hù)進(jìn)程控制將編譯后的應(yīng)用發(fā)往maven倉(cāng)庫(kù),再由守護(hù)進(jìn)程控制及執(zhí)行該項(xiàng)目在maven倉(cāng)庫(kù)中的遷移指定的生產(chǎn)服務(wù)器,并按照配置文件完成項(xiàng)目構(gòu)建及對(duì)外發(fā)布,發(fā)布后的項(xiàng)目實(shí)例執(zhí)行情況由守護(hù)進(jìn)程持續(xù)地、動(dòng)態(tài)地獲取監(jiān)控?cái)?shù)據(jù),以提供統(tǒng)一接口的方式,降低監(jiān)控系統(tǒng)和項(xiàng)目實(shí)例間的復(fù)雜度,減少運(yùn)維人員的手工參與,實(shí)現(xiàn)發(fā)布及監(jiān)控的標(biāo)準(zhǔn)化和方便擴(kuò)展,有效支撐運(yùn)維工作的及時(shí)及高效;
圖3是本發(fā)明實(shí)施例中一種基于守護(hù)進(jìn)程的服務(wù)器端應(yīng)用發(fā)布流程示意圖,通過(guò)守護(hù)進(jìn)程發(fā)布項(xiàng)目和監(jiān)控項(xiàng)目實(shí)例的進(jìn)行,并充分結(jié)合maven的項(xiàng)目創(chuàng)建特性,使預(yù)發(fā)布的任一項(xiàng)目在非生產(chǎn)環(huán)境中經(jīng)編譯和打包后發(fā)至遠(yuǎn)程maven倉(cāng)庫(kù),由守護(hù)進(jìn)程控制及執(zhí)行該項(xiàng)目在maven倉(cāng)庫(kù)中的遷移、按標(biāo)準(zhǔn)構(gòu)建及對(duì)外發(fā)布,具體步驟包括:
步驟301:預(yù)發(fā)布的項(xiàng)目經(jīng)編譯后,以壓縮包形式上傳至在遠(yuǎn)程maven庫(kù)進(jìn)行部署,記錄maven倉(cāng)庫(kù)的部署信息,形成部署配置文件;同時(shí)按照守護(hù)進(jìn)程定義的規(guī)則編制該項(xiàng)目的驅(qū)動(dòng)信息,所述驅(qū)動(dòng)信息包括:項(xiàng)目配置文件、基于守護(hù)進(jìn)程的驅(qū)動(dòng)實(shí)現(xiàn)規(guī)則、項(xiàng)目構(gòu)建的maven腳本。
特別地,項(xiàng)目配置描述文件只負(fù)責(zé)對(duì)參數(shù)進(jìn)行描述,無(wú)需給參數(shù)賦值,參數(shù)的賦值動(dòng)作在提交守護(hù)進(jìn)程進(jìn)行發(fā)布的時(shí)候再賦予。
步驟302:待項(xiàng)目當(dāng)前需要在服務(wù)器上發(fā)布時(shí),將該項(xiàng)目的驅(qū)動(dòng)信息提交給守護(hù)進(jìn)程,由守護(hù)進(jìn)程控制項(xiàng)目發(fā)布流程及發(fā)布后的持續(xù)監(jiān)控;其中,驅(qū)動(dòng)信息以jar包形式提供;
步驟303::守護(hù)進(jìn)程接收到項(xiàng)目驅(qū)動(dòng)信息jar包,通過(guò)解析驅(qū)動(dòng)信息jar包,提取項(xiàng)目配置描述文件、基于守護(hù)進(jìn)程的驅(qū)動(dòng)實(shí)現(xiàn)、項(xiàng)目構(gòu)建的maven腳本;
步驟304:守護(hù)進(jìn)程根據(jù)項(xiàng)目配置描述文件的內(nèi)容,提取預(yù)先配置的相關(guān)項(xiàng)目發(fā)布的參數(shù)和守護(hù)進(jìn)程運(yùn)行參數(shù),構(gòu)建能被maven識(shí)別的項(xiàng)目發(fā)布配置文件即profile文件(profile文件用于定義有關(guān)項(xiàng)目的系列配置信息);
步驟305:守護(hù)進(jìn)程根據(jù)項(xiàng)目構(gòu)建的maven腳本,從maven倉(cāng)庫(kù)中遷移預(yù)發(fā)布項(xiàng)目的壓縮包至指定發(fā)布服務(wù)器內(nèi)指定目錄中;同時(shí)結(jié)合maven腳本和項(xiàng)目發(fā)布配置文件即profile文件,形成最終預(yù)發(fā)布項(xiàng)目的配置參數(shù),至此,通過(guò)利用maven倉(cāng)庫(kù),項(xiàng)目構(gòu)建完畢;
步驟306:守護(hù)進(jìn)程按照預(yù)發(fā)布項(xiàng)目的配置參數(shù),提取項(xiàng)目壓縮包,執(zhí)行項(xiàng)目在服務(wù)器內(nèi)的發(fā)布;
步驟307:守護(hù)進(jìn)程根據(jù)啟動(dòng)指令,對(duì)已發(fā)布的項(xiàng)目執(zhí)行啟動(dòng)操作;
圖4是本發(fā)明實(shí)施例中一種基于守護(hù)進(jìn)程的應(yīng)用實(shí)例監(jiān)控結(jié)構(gòu)示意圖,守護(hù)進(jìn)程不承擔(dān)解析監(jiān)控?cái)?shù)據(jù),僅承擔(dān)監(jiān)控?cái)?shù)據(jù)轉(zhuǎn)發(fā)的角色,負(fù)責(zé)接收監(jiān)控系統(tǒng)發(fā)出的監(jiān)控請(qǐng)求,并將監(jiān)控請(qǐng)求轉(zhuǎn)給項(xiàng)目實(shí)例,最終將從項(xiàng)目實(shí)例中獲取到的監(jiān)控?cái)?shù)據(jù)返回給監(jiān)控系統(tǒng);
在對(duì)項(xiàng)目實(shí)例的監(jiān)控過(guò)程中,守護(hù)進(jìn)程以提供接口(心跳監(jiān)控接口或者自定義監(jiān)控接口)的形式,接收項(xiàng)目實(shí)例傳送的監(jiān)控?cái)?shù)據(jù);
圖5是本發(fā)明實(shí)施例中一種基于守護(hù)進(jìn)程的監(jiān)控流程圖,守護(hù)進(jìn)程以提供統(tǒng)一接口的形式,維護(hù)監(jiān)控系統(tǒng)和項(xiàng)目實(shí)例之間的監(jiān)控關(guān)系,具體步驟包括:
步驟501:監(jiān)控系統(tǒng)向需要監(jiān)控的項(xiàng)目實(shí)例所在機(jī)器的守護(hù)進(jìn)程發(fā)起監(jiān)控請(qǐng)求;
步驟502:守護(hù)進(jìn)程收到監(jiān)控應(yīng)用發(fā)起的請(qǐng)求,判斷請(qǐng)求需要發(fā)送到哪一個(gè)項(xiàng)目實(shí)例,然后從守護(hù)進(jìn)程管理的項(xiàng)目實(shí)例中確認(rèn),并向守護(hù)進(jìn)程提供監(jiān)控接口,通過(guò)該監(jiān)控接口轉(zhuǎn)發(fā)項(xiàng)目實(shí)例的監(jiān)控請(qǐng)求;
步驟503:項(xiàng)目實(shí)例收到守護(hù)進(jìn)程轉(zhuǎn)發(fā)來(lái)監(jiān)控請(qǐng)求,根據(jù)請(qǐng)求內(nèi)容獲取負(fù)責(zé)監(jiān)控的插件,獲取需要監(jiān)控的數(shù)據(jù)。
步驟504:實(shí)例將獲取到的監(jiān)控?cái)?shù)據(jù)返回給守護(hù)進(jìn)程;
步驟505:守護(hù)進(jìn)程將收到的監(jiān)控?cái)?shù)據(jù)返回給監(jiān)控系統(tǒng);
特別地,在監(jiān)控項(xiàng)目實(shí)例的過(guò)程中,守護(hù)進(jìn)程充當(dāng)?shù)氖且粋€(gè)數(shù)據(jù)轉(zhuǎn)發(fā)的角色,在監(jiān)控應(yīng)用和實(shí)例之間,充當(dāng)了一個(gè)對(duì)外的統(tǒng)一接口,降低了監(jiān)控應(yīng)用需要維護(hù)和實(shí)例之間的關(guān)系的復(fù)雜度。