專(zhuān)利名稱(chēng):一種進(jìn)程升級(jí)的方法及進(jìn)程升級(jí)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體涉及一種進(jìn)程升級(jí)的方法及進(jìn)程升級(jí)系統(tǒng)背景技術(shù)進(jìn)程升級(jí)是指在支持多進(jìn)程的系統(tǒng)中,通過(guò)啟動(dòng)新的進(jìn)程并將源進(jìn)程中的業(yè)務(wù)復(fù)制到新進(jìn)程中,再注銷(xiāo)源進(jìn)程,從而實(shí)現(xiàn)進(jìn)程升級(jí)。通過(guò)對(duì)進(jìn)程的升級(jí),可實(shí)現(xiàn)將進(jìn)程升級(jí)到更高版本的軟件進(jìn)程中,從而解決源版本軟件進(jìn)程的一些不足或漏洞等。
當(dāng)源進(jìn)程為在線進(jìn)程,也即所述源進(jìn)程為T(mén)CP socket套接字進(jìn)程時(shí),由于TCP連接的復(fù)雜性,不易實(shí)現(xiàn)對(duì)TCP socket套接字進(jìn)程的在線升級(jí),一般均需要先拆除socket套接字連接,將源進(jìn)程升級(jí)到新接新進(jìn)程后,重新建立socket套接字連接。由于在升級(jí)過(guò)程中會(huì)中斷socket套接字連接,可能導(dǎo)致數(shù)據(jù)的丟失和進(jìn)程動(dòng)蕩,且與套接字接口連接的對(duì)端也會(huì)感知到本端的升級(jí)。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種進(jìn)程升級(jí)的方法及進(jìn)程升級(jí)系統(tǒng),以實(shí)現(xiàn)在不斷開(kāi)套接字連接的前提下,對(duì)進(jìn)程進(jìn)行升級(jí)。
本發(fā)明實(shí)施例的技術(shù)方案包括一種進(jìn)程升級(jí)的方法,所述進(jìn)程通過(guò)套接字接口與所述套接字接口連接的對(duì)端進(jìn)行數(shù)據(jù)交互;所述方法包括步驟創(chuàng)建目標(biāo)進(jìn)程,并將源進(jìn)程的進(jìn)程數(shù)據(jù)備份至所述目標(biāo)進(jìn)程;判斷所述源進(jìn)程已接收到的數(shù)據(jù)是否完整,如果是,則所述源進(jìn)程停止與所述套接字接口進(jìn)行數(shù)據(jù)交互;所述源進(jìn)程將所述已接收到的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程;
所述目標(biāo)進(jìn)程向所述套接字接口發(fā)送升級(jí)切換請(qǐng)求信息;所述套接字接口接收到來(lái)自所述目標(biāo)進(jìn)程的升級(jí)切換請(qǐng)求信息后,將套接字接口服務(wù)切換至所述目標(biāo)進(jìn)程。
一種進(jìn)程升級(jí)系統(tǒng),包括源進(jìn)程單元、套接字接口單元以及目標(biāo)進(jìn)程單元,其中源進(jìn)程單元,用于對(duì)自身進(jìn)行進(jìn)程升級(jí)時(shí),將自身的進(jìn)程數(shù)據(jù)備份至所述目標(biāo)進(jìn)程單元,并判斷已接收到的來(lái)自于對(duì)端的數(shù)據(jù)是否完整,如果是,則停止與所述套接字接口單元進(jìn)行數(shù)據(jù)交互,并將已接收到的來(lái)自于對(duì)端的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程單元,在備份結(jié)束后,向所述目標(biāo)進(jìn)程單元發(fā)送升級(jí)切換指示信息;目標(biāo)進(jìn)程單元,用于在接收到來(lái)自于所述源進(jìn)程單元的所述升級(jí)切換指示信息后,向所述套接字接口單元發(fā)送升級(jí)切換請(qǐng)求信息;套接字接口單元,用于在接收到來(lái)自于所述目標(biāo)進(jìn)程單元的所述升級(jí)切換請(qǐng)求信息后,將套接字接口服務(wù)切換至所述目標(biāo)進(jìn)程單元,以使所述目標(biāo)進(jìn)程單元通過(guò)所述套接字接口單元與所述套接字接口單元。
本發(fā)明實(shí)施例所述的源進(jìn)程在對(duì)自身進(jìn)行升級(jí)時(shí),創(chuàng)建目標(biāo)進(jìn)程并將自身的進(jìn)程數(shù)據(jù)備份至所述目標(biāo)進(jìn)程,在所接收到的來(lái)自于套接字接口的數(shù)據(jù)完整時(shí)停止與所述套接字接口交互數(shù)據(jù),并將所接收到的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程,以使所述目標(biāo)進(jìn)程的數(shù)據(jù)和所述源進(jìn)程的數(shù)據(jù)一致,在備份結(jié)束后,所述目標(biāo)進(jìn)程向所述套接字接口發(fā)送升級(jí)切換請(qǐng)求,所述套接字接口在接收到所述升級(jí)切換請(qǐng)求信息后,將套接字服務(wù)切換至所述目標(biāo)進(jìn)程,以使所述目標(biāo)進(jìn)程通過(guò)所述套接字接口與所述套接字接口連接的對(duì)端進(jìn)行數(shù)據(jù)交互。通過(guò)本發(fā)明實(shí)施例提供的目標(biāo)進(jìn)程的方法及目標(biāo)進(jìn)程系統(tǒng),實(shí)現(xiàn)了在不斷開(kāi)套接字連接的前提下,對(duì)進(jìn)程進(jìn)行可靠、平穩(wěn)升級(jí),且在升級(jí)前后,與套接字接口連接的對(duì)端不會(huì)感知到本端的升級(jí)。
圖1是本發(fā)明實(shí)施例的進(jìn)程升級(jí)系統(tǒng)組成示意圖;圖2是本發(fā)明實(shí)施例的源進(jìn)程單元的組成示意圖;圖3是本發(fā)明實(shí)施例的進(jìn)程升級(jí)方法的流程示意圖。
具體實(shí)施例方式
為了使本發(fā)明實(shí)施例的技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖并舉實(shí)施例對(duì)本發(fā)明實(shí)施例進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。
參考圖1,是本發(fā)明實(shí)施例的進(jìn)程升級(jí)系統(tǒng)的組成示意圖。如圖所示,本發(fā)明實(shí)施例所述的進(jìn)程升級(jí)系統(tǒng)主要包括源進(jìn)程單元1、目標(biāo)進(jìn)程單元2、套接字接口單元3、第一套接字代理(socket lib)模塊4以及第二socket lib模塊5。下面對(duì)各單元功能及相互關(guān)系進(jìn)行詳細(xì)說(shuō)明。
所述源進(jìn)程單元1,用于對(duì)進(jìn)程進(jìn)行升級(jí)時(shí),判斷已接收到的來(lái)自于對(duì)端的數(shù)據(jù)是否完整,如果是,則停止與所述套接字接口單元3進(jìn)行數(shù)據(jù)交互,并將已接收到的來(lái)自于對(duì)端的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程單元2,在備份結(jié)束后,向所述目標(biāo)進(jìn)程單元2發(fā)送升級(jí)切換指示信息。
此處,參考圖2,具體實(shí)施時(shí),所述源進(jìn)程單元1主要包括數(shù)據(jù)備份單元11,用于將所述源進(jìn)程單元1的進(jìn)程數(shù)據(jù)以及通過(guò)所述套接字接口單元3接收到的來(lái)自所述對(duì)端的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程單元2。
此處,所述進(jìn)程數(shù)據(jù)包括進(jìn)程啟動(dòng)后的一些相關(guān)函數(shù)的調(diào)用數(shù)據(jù)、進(jìn)程的一些命令數(shù)據(jù)等,數(shù)據(jù)備份的目的是為了保證目標(biāo)進(jìn)程中的數(shù)據(jù)和源進(jìn)程中的數(shù)據(jù)相同和一致。具體實(shí)施時(shí),備份過(guò)程可分為批量備份和實(shí)時(shí)備份,由于套接字接口單元3會(huì)一直將其所接收到的數(shù)據(jù)報(bào)文發(fā)送給源進(jìn)程單元1,因此,當(dāng)批量備份結(jié)束后,所述源進(jìn)程單元1停止與所述套接字接口單元3交互數(shù)據(jù)時(shí),數(shù)據(jù)備份才可能結(jié)束。
獲取單元12,用于在接收數(shù)據(jù)時(shí),獲取從對(duì)端接收到的數(shù)據(jù)的長(zhǎng)度信息。
此處,在接收數(shù)據(jù)時(shí),所述源進(jìn)程單元1通過(guò)檢測(cè)其所接收到的數(shù)據(jù)報(bào)文的首部,獲取數(shù)據(jù)報(bào)文的長(zhǎng)度信息。
判斷單元13,用于根據(jù)所述獲取單元12所獲取的從對(duì)端接收到的數(shù)據(jù)的長(zhǎng)度信息判斷已接收到的來(lái)自于對(duì)端的數(shù)據(jù)是否完整并生成相應(yīng)的判斷結(jié)果,以使所述源進(jìn)程在判斷結(jié)果為是時(shí),停止與所述套接字接口單元進(jìn)行數(shù)據(jù)交互。
升級(jí)切換指示信息發(fā)送單元14,用于在所述數(shù)據(jù)備份單元11備份結(jié)束后,向所述目標(biāo)進(jìn)程單元2發(fā)送升級(jí)切換指示信息。
所述目標(biāo)進(jìn)程單元2,用于在接收到來(lái)自于所述源進(jìn)程單元1的所述升級(jí)切換指示信息后,向所述套接字接口單元3發(fā)送升級(jí)切換請(qǐng)求信息。
此處,所述升級(jí)切換指示信息攜帶有相應(yīng)的目標(biāo)進(jìn)程的進(jìn)程標(biāo)識(shí)、以及與所述源進(jìn)程相同的服務(wù)名稱(chēng)。
所述套接字接口單元3,用于在接收到來(lái)自于所述目標(biāo)進(jìn)程單元2的所述升級(jí)切換請(qǐng)求信息后,將套接字接口服務(wù)切換至所述目標(biāo)進(jìn)程單元2,以使所述目標(biāo)進(jìn)程單元2通過(guò)所述套接字接口單元3與所述套接字接口單元3連接的對(duì)端進(jìn)行數(shù)據(jù)交互。
此處所述套接字接口單元3包括套接字存根模塊(socket stub)31和用于提供socket接口服務(wù)的套接字接口模塊32,對(duì)所述socket stub模塊31的功能將在下文中有相應(yīng)描述。
所述源進(jìn)程單元1設(shè)置有相應(yīng)的第一socket lib模塊4,對(duì)應(yīng)于所述目標(biāo)進(jìn)程單元2設(shè)置有相應(yīng)的第二socket lib模塊5以及在所述套接字接口單元中設(shè)置有相應(yīng)的socket stub模塊31。在所述socket-lib機(jī)制中,socket lib相當(dāng)于一精簡(jiǎn)的偽socket模塊與應(yīng)用程序運(yùn)行于同一進(jìn)程中,socket stub則作為一代理模塊與套接字接口運(yùn)行于同一進(jìn)程中,socket-lib機(jī)制將進(jìn)程間的通訊對(duì)應(yīng)用程序全部屏蔽,使得應(yīng)用程序好象是直接使用套接字標(biāo)準(zhǔn)接口,感覺(jué)不到跨進(jìn)程調(diào)用,通過(guò)socket-lib機(jī)制,將進(jìn)程間的函數(shù)調(diào)用轉(zhuǎn)換為進(jìn)程間通訊IPC消息,實(shí)現(xiàn)了套接字接口服務(wù)的跨進(jìn)程擴(kuò)展和延伸,而套接字接口本身卻不改變。
在進(jìn)程升級(jí)切換前,在所述socket stub模塊31中創(chuàng)建有源進(jìn)程標(biāo)識(shí)與套接字接口標(biāo)識(shí)的第一對(duì)應(yīng)關(guān)系,根據(jù)該第一對(duì)應(yīng)關(guān)系,實(shí)現(xiàn)通過(guò)所述第一socket lib模塊4與所述源進(jìn)程單元1通訊,從而使所述源進(jìn)程單元1通過(guò)socket lib模塊4以及socket stub模塊31獲取所述套接字接口模塊32的相應(yīng)的套接字服務(wù)。所述源進(jìn)程單元1在向socket stub模塊31請(qǐng)求套接字服務(wù)時(shí),將自身的服務(wù)名稱(chēng)注冊(cè)到socket stub模塊31,以使socket stub模塊31對(duì)相應(yīng)的進(jìn)程服務(wù)進(jìn)行管理。
當(dāng)對(duì)進(jìn)程進(jìn)行升級(jí)時(shí),所述目標(biāo)進(jìn)程單元2通過(guò)第二socket lib模塊5向socket stub模塊31發(fā)送攜帶有目標(biāo)進(jìn)程標(biāo)識(shí)和與源進(jìn)程相同的服務(wù)名稱(chēng)的升級(jí)切換請(qǐng)求信息,socket stub模塊31在接收到所述升級(jí)切換請(qǐng)求信息后,根據(jù)服務(wù)名稱(chēng)找到相應(yīng)的第一對(duì)應(yīng)關(guān)系,以所述目標(biāo)進(jìn)程標(biāo)識(shí)替換所述第一對(duì)應(yīng)關(guān)系中的源進(jìn)程標(biāo)識(shí),從而創(chuàng)建所述目標(biāo)進(jìn)程標(biāo)識(shí)與所述套接字接口標(biāo)識(shí)的第二對(duì)應(yīng)關(guān)系,所述目標(biāo)進(jìn)程單元2根據(jù)所述第二對(duì)應(yīng)關(guān)系通過(guò)第二socket lib模塊5及socket stub模塊31獲取套接字接口模塊32的套接字服務(wù),從而成功的實(shí)現(xiàn)了進(jìn)程的在線升級(jí),保證了在對(duì)進(jìn)程進(jìn)行升級(jí)時(shí),相應(yīng)的socket連接不需要斷開(kāi),對(duì)端也不會(huì)感知到本端的進(jìn)程升級(jí)。
參考圖3,是本發(fā)明實(shí)施例的進(jìn)程升級(jí)方法的流程示意圖。如圖所示,該實(shí)施例實(shí)施過(guò)程如下步驟s301,創(chuàng)建目標(biāo)進(jìn)程,并將所述源進(jìn)程的進(jìn)程數(shù)據(jù)備份至所述目標(biāo)進(jìn)程。
此處,通過(guò)執(zhí)行命令打開(kāi)更高版本的應(yīng)用程序以創(chuàng)建目標(biāo)進(jìn)程,所述進(jìn)程數(shù)據(jù)包括進(jìn)程啟動(dòng)后的一些相關(guān)函數(shù)的調(diào)用數(shù)據(jù)、進(jìn)程的一些命令數(shù)據(jù)等,數(shù)據(jù)備份的目的是為了保證目標(biāo)進(jìn)程中的數(shù)據(jù)和源進(jìn)程中的數(shù)據(jù)相同和一致。具體實(shí)施時(shí),備份過(guò)程可分為批量備份和實(shí)時(shí)備份,由于所述套接字接口會(huì)一直將其所接收到的數(shù)據(jù)報(bào)文發(fā)送給所述源進(jìn)程,因此,當(dāng)批量備份結(jié)束后,所述源進(jìn)程停止與所述套接字接口交互數(shù)據(jù)時(shí),數(shù)據(jù)備份才可能結(jié)束。
步驟s302,所述套接字接口向所述源進(jìn)程發(fā)送數(shù)據(jù)報(bào)文。
此處,所述套接字接口將其從對(duì)端接收到的數(shù)據(jù)報(bào)文發(fā)送至所述源進(jìn)程,所述套接字接口為T(mén)CP套接字接口或UDP套接字接口或RAW IP套接字接口。
步驟s303,所述源進(jìn)程獲取從所述對(duì)端接收到的數(shù)據(jù)報(bào)文的長(zhǎng)度信息。
此處,所述源進(jìn)程通過(guò)檢測(cè)其所接收到的數(shù)據(jù)報(bào)文的首部,獲取數(shù)據(jù)報(bào)文的長(zhǎng)度信息。
步驟s304,所述源進(jìn)程根據(jù)獲取的所述從對(duì)端接收到的數(shù)據(jù)的長(zhǎng)度信息判斷自身已接收到的數(shù)據(jù)是否完整,如果是,則停止與所述套接字接口交互數(shù)據(jù)。
步驟s305,所述源進(jìn)程將來(lái)自所述套接字接口的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程,以使所述目標(biāo)進(jìn)程中的數(shù)據(jù)和所述源進(jìn)程中的數(shù)據(jù)一致。
此處,通過(guò)該步驟s305以及所述步驟s301,實(shí)現(xiàn)了在所述源進(jìn)程與所述套接字接口停止數(shù)據(jù)交互后,將所述源進(jìn)程中的數(shù)據(jù)完全備份至所目標(biāo)進(jìn)程,以使所述目標(biāo)進(jìn)程中的數(shù)據(jù)和所述源進(jìn)程中的數(shù)據(jù)一致。
步驟s306,所述源進(jìn)程向所述目標(biāo)進(jìn)程發(fā)送升級(jí)切換指示信息。
向所述目標(biāo)進(jìn)程發(fā)送升級(jí)切換指示信息的目的是告知所述目標(biāo)進(jìn)程數(shù)據(jù)備份已經(jīng)結(jié)束,可以向套接字接口請(qǐng)求獲取套接字服務(wù)。
步驟s307,所述目標(biāo)進(jìn)程向所述套接字接口發(fā)送升級(jí)切換請(qǐng)求信息。
此處,所述升級(jí)切換請(qǐng)求信息攜帶有設(shè)置的目標(biāo)進(jìn)程標(biāo)識(shí)。
步驟s308,所述套接字接口在接收到所述升級(jí)切換請(qǐng)求信息后,將套接字服務(wù)切換至所述目標(biāo)進(jìn)程,以使所述目標(biāo)進(jìn)程通過(guò)所述套接字接口與所述套接字接口單元連接的對(duì)端進(jìn)行數(shù)據(jù)交互。
步驟s309,注銷(xiāo)所述源進(jìn)程。
在所述步驟s307中,所述升級(jí)切換請(qǐng)求信息攜帶有相應(yīng)的目標(biāo)進(jìn)程的進(jìn)程標(biāo)識(shí)、以及與所述源進(jìn)程相同的服務(wù)名稱(chēng)。在本發(fā)明實(shí)施例中,通過(guò)socket-lib機(jī)制來(lái)實(shí)現(xiàn)跨進(jìn)程下應(yīng)用程序進(jìn)程仍可以繼續(xù)使用socket套接字服務(wù),在socket-lib機(jī)制中,socket lib相當(dāng)于一精簡(jiǎn)的偽socket模塊與應(yīng)用程序運(yùn)行于同一進(jìn)程中,socket stub則作為一代理模塊與套接字接口運(yùn)行于同一進(jìn)程中,socket-lib機(jī)制將進(jìn)程間的通訊對(duì)應(yīng)用程序全部屏蔽,使得應(yīng)用程序好象是直接使用套接字標(biāo)準(zhǔn)接口,感覺(jué)不到跨進(jìn)程調(diào)用,通過(guò)socket-lib機(jī)制,將進(jìn)程間的函數(shù)調(diào)用轉(zhuǎn)換為進(jìn)程間通訊IPC消息,實(shí)現(xiàn)了套接字接口服務(wù)的跨進(jìn)程擴(kuò)展和延伸,而套接字接口本身卻不改變。
在進(jìn)程升級(jí)切換前,在與套接字接口對(duì)應(yīng)的socket stub中創(chuàng)建有源進(jìn)程標(biāo)識(shí)與套接字接口標(biāo)識(shí)的第一對(duì)應(yīng)關(guān)系,根據(jù)該第一對(duì)應(yīng)關(guān)系,實(shí)現(xiàn)通過(guò)所述socket lib與所述源進(jìn)程通訊,從而使所述源進(jìn)程通過(guò)socket lib以及socket stub獲取所述套接字接口的相應(yīng)的套接字服務(wù)。所述源進(jìn)程在向socket stub請(qǐng)求套接字服務(wù)時(shí),將自身的服務(wù)名稱(chēng)注冊(cè)到socket stub,以使socket stub對(duì)相應(yīng)的進(jìn)程服務(wù)進(jìn)行管理。
當(dāng)對(duì)進(jìn)程進(jìn)行升級(jí)時(shí),所述目標(biāo)進(jìn)程通過(guò)socket lib向socket stub發(fā)送攜帶有目標(biāo)進(jìn)程標(biāo)識(shí)和與源進(jìn)程相同的服務(wù)名稱(chēng)的升級(jí)切換請(qǐng)求信息,socket stub在接收到所述升級(jí)切換請(qǐng)求信息后,根據(jù)服務(wù)名稱(chēng)找到相應(yīng)的第一對(duì)應(yīng)關(guān)系,以所述目標(biāo)進(jìn)程標(biāo)識(shí)替換所述第一對(duì)應(yīng)關(guān)系中的源進(jìn)程標(biāo)識(shí),從而創(chuàng)建所述目標(biāo)進(jìn)程標(biāo)識(shí)與所述套接字接口標(biāo)識(shí)的第二對(duì)應(yīng)關(guān)系,所述目標(biāo)進(jìn)程根據(jù)所述第二對(duì)應(yīng)關(guān)系通過(guò)socket lib及socket stub獲取套接字接口的套接字服務(wù),從而成功的實(shí)現(xiàn)了進(jìn)程的在線升級(jí),保證了在對(duì)進(jìn)程進(jìn)行升級(jí)時(shí),相應(yīng)的socket連接不需要斷開(kāi),對(duì)端也不會(huì)感知到本端的進(jìn)程升級(jí)。
本發(fā)明實(shí)施例所述源進(jìn)程、所述套接字接口、以及所述目標(biāo)進(jìn)程任意兩者之間通過(guò)進(jìn)程間通信IPC消息通訊。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種進(jìn)程升級(jí)的方法,所述進(jìn)程通過(guò)套接字接口與所述套接字接口連接的對(duì)端進(jìn)行數(shù)據(jù)交互;其特征在于,所述方法包括步驟創(chuàng)建目標(biāo)進(jìn)程,并將源進(jìn)程的進(jìn)程數(shù)據(jù)備份至所述目標(biāo)進(jìn)程;判斷所述源進(jìn)程已接收到的數(shù)據(jù)是否完整,如果是,則所述源進(jìn)程停止與所述套接字接口進(jìn)行數(shù)據(jù)交互;所述源進(jìn)程將所述已接收到的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程;所述目標(biāo)進(jìn)程向所述套接字接口發(fā)送升級(jí)切換請(qǐng)求信息;所述套接字接口接收到來(lái)自所述目標(biāo)進(jìn)程的升級(jí)切換請(qǐng)求信息后,將套接字接口服務(wù)切換至所述目標(biāo)進(jìn)程。
2,如權(quán)利要求1所述的方法,其特征在于,在所述目標(biāo)進(jìn)程向所述套接字接口發(fā)送升級(jí)切換請(qǐng)求信息的步驟與所述源進(jìn)程將所述已接收到的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程的步驟之間還包括步驟;所述源升級(jí)進(jìn)程向所述目標(biāo)進(jìn)程發(fā)送升級(jí)切換指示信息。
3.如權(quán)利要求1所述的方法,其特征在于,所述判斷所述源進(jìn)程已接收到的數(shù)據(jù)是否完整的步驟為所述源進(jìn)程獲取從對(duì)端接收到的數(shù)據(jù)的長(zhǎng)度信息;所述源進(jìn)程根據(jù)獲取的所述從對(duì)端接收到的數(shù)據(jù)的長(zhǎng)度信息判斷自身已接收到的數(shù)據(jù)是否完整。
4.如權(quán)利要求1所述的方法,其特征在于,在創(chuàng)建目標(biāo)進(jìn)程之前包括步驟設(shè)置源進(jìn)程標(biāo)識(shí)和套接字標(biāo)識(shí)并創(chuàng)建所述源進(jìn)程標(biāo)識(shí)與所述套接字標(biāo)識(shí)的第一對(duì)應(yīng)關(guān)系,所述源進(jìn)程根據(jù)所述第一對(duì)應(yīng)關(guān)系獲取套接字接口服務(wù),以實(shí)現(xiàn)通過(guò)所述套接字接口與所述套接字接口連接的對(duì)端進(jìn)行數(shù)據(jù)交互。
5.如權(quán)利要求4所述的方法,其特征在于,所述升級(jí)切換請(qǐng)求信息中攜帶有設(shè)置的目標(biāo)進(jìn)程標(biāo)識(shí);所述套接字接口接收到來(lái)自所述目標(biāo)進(jìn)程的升級(jí)切換請(qǐng)求信息后,將套接字接口服務(wù)切換至所述目標(biāo)進(jìn)程的步驟為所述套接字接口在接收到所述升級(jí)切換請(qǐng)求信息后,以所述升級(jí)標(biāo)識(shí)替換所述第一對(duì)應(yīng)關(guān)系中的源進(jìn)程標(biāo)識(shí),以創(chuàng)建所述目標(biāo)進(jìn)程標(biāo)識(shí)與所述套接字標(biāo)識(shí)的第二對(duì)應(yīng)關(guān)系,所述套接字接口根據(jù)所述第二對(duì)應(yīng)關(guān)系將所述套接字接口服務(wù)切換至所述目標(biāo)進(jìn)程,以使所述目標(biāo)進(jìn)程通過(guò)所述套接字接口與所述套接字接口連接的對(duì)端進(jìn)行數(shù)據(jù)交互。
6.如權(quán)利要求3所述的方法,其特征在于,所述源進(jìn)程通過(guò)檢測(cè)所述從對(duì)端接收到的數(shù)據(jù)的首部獲取所述數(shù)據(jù)的長(zhǎng)度信息。
7.如權(quán)利要求1至6任一項(xiàng)所述的方法,其特征在于,在所述將套接字接口服務(wù)切換至所述目標(biāo)進(jìn)程的步驟之后,進(jìn)一步包括步驟注銷(xiāo)所述源進(jìn)程。
8.如權(quán)利要求1至6任一項(xiàng)所述的方法,其特征在于,所述源進(jìn)程、所述目標(biāo)進(jìn)程以及所述套接字接口任意兩者之間通過(guò)進(jìn)程間通信消息傳送所述數(shù)據(jù)。
9.如權(quán)利要求1至6任一項(xiàng)所述的方法,其特征在于,所述套接字接口為T(mén)CP套接字接口或UDP套接字接口或RAW IP套接字接口。
10.一種進(jìn)程升級(jí)系統(tǒng),其特征在于,包括源進(jìn)程單元、套接字接口單元以及目標(biāo)進(jìn)程單元,其中源進(jìn)程單元,用于對(duì)自身進(jìn)行進(jìn)程升級(jí)時(shí),將自身的進(jìn)程數(shù)據(jù)備份至所述目標(biāo)進(jìn)程單元,并判斷已接收到的來(lái)自于對(duì)端的數(shù)據(jù)是否完整,如果是,則停止與所述套接字接口單元進(jìn)行數(shù)據(jù)交互,并將已接收到的來(lái)自于對(duì)端的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程單元,在備份結(jié)束后,向所述目標(biāo)進(jìn)程單元發(fā)送升級(jí)切換指示信息;目標(biāo)進(jìn)程單元,用于在接收到來(lái)自于所述源進(jìn)程單元的所述升級(jí)切換指示信息后,向所述套接字接口單元發(fā)送升級(jí)切換請(qǐng)求信息;套接字接口單元,用于在接收到來(lái)自于所述目標(biāo)進(jìn)程單元的所述升級(jí)切換請(qǐng)求信息后,將套接字接口服務(wù)切換至所述目標(biāo)進(jìn)程單元,以使所述目標(biāo)進(jìn)程單元通過(guò)所述套接字接口單元與所述套接字接口單元連接的對(duì)端進(jìn)行數(shù)據(jù)交互。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述源進(jìn)程單元包括數(shù)據(jù)備份單元,用于將所述源進(jìn)程單元的進(jìn)程數(shù)據(jù)以及通過(guò)所述套接字接口單元接收到的來(lái)自所述對(duì)端的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程單元;獲取單元,用于在接收數(shù)據(jù)時(shí),獲取從對(duì)端接收到的數(shù)據(jù)的長(zhǎng)度信息;判斷單元,用于根據(jù)所述獲取單元所獲取的從對(duì)端接收到的數(shù)據(jù)的長(zhǎng)度信息判斷已接收到的來(lái)自于對(duì)端的數(shù)據(jù)是否完整并生成相應(yīng)的判斷結(jié)果,以使所述源進(jìn)程在判斷結(jié)果為是時(shí),停止與所述套接字接口單元進(jìn)行數(shù)據(jù)交互;升級(jí)切換指示信息發(fā)送單元,用于在所述數(shù)據(jù)備份單元備份結(jié)束后,向所述目標(biāo)進(jìn)程單元發(fā)送升級(jí)切換指示信息。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述進(jìn)程升級(jí)系統(tǒng)還包括第一套接字代理模塊,與所述源進(jìn)程單元對(duì)應(yīng),用于將進(jìn)程數(shù)據(jù)函數(shù)調(diào)用轉(zhuǎn)換為進(jìn)程間通信消息;第二套接字代理模塊,與所述目標(biāo)進(jìn)程單元對(duì)應(yīng),用于將進(jìn)程數(shù)據(jù)函數(shù)調(diào)用轉(zhuǎn)換為進(jìn)程間通信消息。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述套接字接口單元包括套接字接口模塊,用于提供套接字服務(wù);套接字存根模塊,與所述套接字接口模塊對(duì)應(yīng),用于根據(jù)進(jìn)程標(biāo)識(shí)與套接字接口標(biāo)識(shí)的對(duì)應(yīng)關(guān)系實(shí)現(xiàn)套接字接口與相應(yīng)進(jìn)程的通訊。
14.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述獲取單元通過(guò)檢測(cè)所述從對(duì)端接收到的數(shù)據(jù)的首部獲取所述數(shù)據(jù)的長(zhǎng)度信息。
15.如權(quán)利要求10至14任一項(xiàng)所述的系統(tǒng),其特征在于,所述源進(jìn)程單元、所述目標(biāo)進(jìn)程單元以及所述套接字接口單元任意兩者之間通過(guò)進(jìn)程間通信消息傳送所述數(shù)據(jù)。
全文摘要
本發(fā)明提供了一種進(jìn)程升級(jí)的方法和進(jìn)程升級(jí)系統(tǒng),所述方法包括創(chuàng)建目標(biāo)進(jìn)程并將源進(jìn)程的進(jìn)程數(shù)據(jù)備份至所述目標(biāo)進(jìn)程,在所接收到的來(lái)自于套接字接口的數(shù)據(jù)完整時(shí)停止與所述套接字接口交互數(shù)據(jù),并將所接收到的數(shù)據(jù)備份至所述目標(biāo)進(jìn)程,在備份結(jié)束后,所述目標(biāo)進(jìn)程向所述套接字接口發(fā)送升級(jí)切換請(qǐng)求,所述套接字接口在接收到所述升級(jí)切換請(qǐng)求信息后,將套接字服務(wù)切換至所述目標(biāo)進(jìn)程,以使所述目標(biāo)進(jìn)程通過(guò)所述套接字接口與所述套接字接口連接的對(duì)端進(jìn)行數(shù)據(jù)交互。通過(guò)本發(fā)明實(shí)施例提供的進(jìn)程升級(jí)的方法及進(jìn)程升級(jí)系統(tǒng),實(shí)現(xiàn)了在不斷開(kāi)套接字連接的前提下,對(duì)進(jìn)程進(jìn)行可靠、平穩(wěn)升級(jí)。
文檔編號(hào)G06F9/445GK101051941SQ20071002805
公開(kāi)日2007年10月10日 申請(qǐng)日期2007年5月17日 優(yōu)先權(quán)日2007年5月17日
發(fā)明者羅漢軍, 涂伯顏, 施勇 申請(qǐng)人:華為技術(shù)有限公司