亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

系統(tǒng)服務(wù)的重載方法及裝置的制造方法

文檔序號(hào):10569766閱讀:404來源:國(guó)知局
系統(tǒng)服務(wù)的重載方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種系統(tǒng)服務(wù)的重載方法及裝置。其中,該方法包括:接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求,其中,系統(tǒng)服務(wù)中至少包括兩條具有相同配置信息的服務(wù)進(jìn)程;根據(jù)預(yù)先設(shè)置的服務(wù)重載狀態(tài),判斷是否對(duì)系統(tǒng)服務(wù)進(jìn)行重載,其中,服務(wù)重載狀態(tài)至少包括:開啟狀態(tài)和關(guān)閉狀態(tài);當(dāng)服務(wù)重載狀態(tài)為開啟狀態(tài)時(shí),獲取與服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程屬性,其中,進(jìn)程屬性用于標(biāo)記創(chuàng)建服務(wù)進(jìn)程的先后順序;根據(jù)進(jìn)程屬性,確定在系統(tǒng)服務(wù)中用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。本發(fā)明解決了由于系統(tǒng)服務(wù)重載,導(dǎo)致重載期間內(nèi)的系統(tǒng)服務(wù)時(shí)延長(zhǎng)的技術(shù)問題。
【專利說明】
系統(tǒng)服務(wù)的重載方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種系統(tǒng)服務(wù)的重載方法及裝置。
【背景技術(shù)】
[0002]在各類操作系統(tǒng)中,往往通過運(yùn)行中的各種系統(tǒng)服務(wù)來實(shí)現(xiàn)各類功能的。而一些用于提供網(wǎng)絡(luò)服務(wù)的系統(tǒng)服務(wù)必須通過重新啟動(dòng)服務(wù)進(jìn)程才能完成配置文件的重新載入或者服務(wù)進(jìn)程的更新。
[0003]以Linux系統(tǒng)中的HAProxy網(wǎng)絡(luò)服務(wù)為例進(jìn)行說明。此網(wǎng)絡(luò)服務(wù)是通過使用S0_REUSEP0RT選項(xiàng)實(shí)現(xiàn),在將新創(chuàng)建的服務(wù)進(jìn)程綁定到與原始服務(wù)進(jìn)程完全相同的網(wǎng)絡(luò)地址(IP地址)和網(wǎng)絡(luò)端口后,開始對(duì)新創(chuàng)建服務(wù)進(jìn)程的套接字進(jìn)行監(jiān)聽,當(dāng)新創(chuàng)建的服務(wù)進(jìn)程創(chuàng)建后,發(fā)送信號(hào)通知原始服務(wù)進(jìn)程關(guān)閉監(jiān)聽端口的監(jiān)聽套接字(socket)。但是,當(dāng)新創(chuàng)建的服務(wù)進(jìn)程與原始服務(wù)進(jìn)程都綁定到同一個(gè)IP和端口,并且還未關(guān)閉對(duì)原始服務(wù)進(jìn)程套接字的監(jiān)聽時(shí),一旦有來自外部客戶端發(fā)送的新的連接請(qǐng)求時(shí),根據(jù)現(xiàn)有Linux系統(tǒng)內(nèi)核中S0_REUSEP0RT選項(xiàng)的實(shí)現(xiàn)方法,新連接請(qǐng)求的第一個(gè)報(bào)文(SYN報(bào)文)存在同樣的幾率被分配到新建服務(wù)進(jìn)程或原始服務(wù)進(jìn)程當(dāng)中。如果SYN報(bào)文被分配到原始服務(wù)進(jìn)程,而緊接著停止對(duì)原始進(jìn)程的套接字進(jìn)行監(jiān)聽,根據(jù)TCP協(xié)議,操作系統(tǒng)將發(fā)送重置報(bào)文(TCP RST報(bào)文)至外部設(shè)備以重置連接。
[0004]針對(duì)上述問題,目前有一些解決方案。例如在服務(wù)進(jìn)程重載期間配置過濾規(guī)則(i P tab I e s規(guī)則)丟棄掉重載期間新接收到的SYN報(bào)文。根據(jù)TCP協(xié)議,客戶端在沒有收到SYN/ACK報(bào)文一段時(shí)間后會(huì)重新發(fā)送SYN報(bào)文以重新連接。通過上述方案,雖然新連接不會(huì)被重置,但是客戶端等待連接超時(shí)并重新發(fā)送SYN報(bào)文的時(shí)間很長(zhǎng),通常在I秒以上。而服務(wù)進(jìn)程的重載時(shí)間往往只需要幾十毫秒,帶來了較長(zhǎng)時(shí)間的時(shí)延。
[0005]另一中解決方案,可以利用Linux的流量控制工具(TC,TrafficControI)解決。首先,使用過濾規(guī)則標(biāo)記客戶端發(fā)送的新的SYN報(bào)文,再用TC暫時(shí)緩存上述SYN報(bào)文。在對(duì)服務(wù)進(jìn)程完成重載之后,再釋放上述TC緩存的SYN報(bào)文。上述方案雖然時(shí)間時(shí)延相對(duì)較短。但是,由于TC工具只能用于控制流出的數(shù)據(jù)流量,因而使用場(chǎng)景受到了一定的限制。
[0006]針對(duì)上述由于系統(tǒng)服務(wù)重載,導(dǎo)致重載期間內(nèi)的系統(tǒng)服務(wù)時(shí)延長(zhǎng)的問題,目前尚未提出有效的解決方案。

【發(fā)明內(nèi)容】

[0007]本發(fā)明實(shí)施例提供了一種系統(tǒng)服務(wù)的重載方法及裝置,以至少解決由于系統(tǒng)服務(wù)重載,導(dǎo)致重載期間內(nèi)的系統(tǒng)服務(wù)時(shí)延長(zhǎng)的技術(shù)問題。
[0008]根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種重載方法,包括:接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求,其中,上述系統(tǒng)服務(wù)中至少包括兩條具有相同配置信息的服務(wù)進(jìn)程,上述配置信息至少用于記錄端口信息和套接字信息;根據(jù)預(yù)先設(shè)置的服務(wù)重載狀態(tài),判斷是否對(duì)上述系統(tǒng)服務(wù)進(jìn)行重載,其中,上述服務(wù)重載狀態(tài)至少包括:開啟狀態(tài)和關(guān)閉狀態(tài);當(dāng)上述服務(wù)重載狀態(tài)為上述開啟狀態(tài)時(shí),獲取與上述服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程屬性,其中,上述進(jìn)程屬性用于標(biāo)記創(chuàng)建上述服務(wù)進(jìn)程的先后順序;根據(jù)上述進(jìn)程屬性,確定在上述系統(tǒng)服務(wù)中用于應(yīng)答上述調(diào)用請(qǐng)求的上述服務(wù)進(jìn)程。
[0009]進(jìn)一步地,在接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求之前,上述方法還包括:獲取正在運(yùn)行中的第一服務(wù)進(jìn)程的上述配置信息,其中,上述配置信息至少包括與上述第一服務(wù)進(jìn)程對(duì)應(yīng)的套接字;根據(jù)上述配置信息,創(chuàng)建第二服務(wù)進(jìn)程;將上述服務(wù)重載狀態(tài)設(shè)置為上述開啟狀態(tài);以及,在根據(jù)上述進(jìn)程屬性,確定在上述系統(tǒng)服務(wù)中用于應(yīng)答上述調(diào)用請(qǐng)求的上述服務(wù)進(jìn)程之后,上述方法還包括:設(shè)置上述服務(wù)重載狀態(tài)為上述關(guān)閉狀態(tài);結(jié)束未用于應(yīng)答上述調(diào)用請(qǐng)求的上述服務(wù)進(jìn)程。
[0010]進(jìn)一步地,當(dāng)上述進(jìn)程屬性通過字符參數(shù)實(shí)現(xiàn)時(shí),在根據(jù)上述配置信息,創(chuàng)建第二服務(wù)進(jìn)程之后,上述方法還包括:在與上述第二服務(wù)進(jìn)程對(duì)應(yīng)的上述配置信息中設(shè)置上述字符參數(shù),其中,上述字符參數(shù)用于對(duì)新創(chuàng)建的上述服務(wù)進(jìn)程的套接字進(jìn)行標(biāo)記。
[0011]進(jìn)一步地,根據(jù)上述進(jìn)程屬性,確定在上述系統(tǒng)服務(wù)中用于應(yīng)答上述調(diào)用請(qǐng)求的上述服務(wù)進(jìn)程,包括:根據(jù)上述字符參數(shù)對(duì)上述系統(tǒng)服務(wù)中的上述服務(wù)進(jìn)程進(jìn)行運(yùn)算處理,得到與上述服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程運(yùn)算值;根據(jù)上述運(yùn)算計(jì)算值,確定用于應(yīng)答上述調(diào)用請(qǐng)求的上述服務(wù)進(jìn)程。
[0012]進(jìn)一步地,根據(jù)上述字符參數(shù)對(duì)上述系統(tǒng)服務(wù)中的上述服務(wù)進(jìn)程進(jìn)行運(yùn)算處理包括:根據(jù)上述字符參數(shù)對(duì)上述系統(tǒng)服務(wù)中的上述服務(wù)進(jìn)程進(jìn)行加權(quán)運(yùn)算;和/或根據(jù)上述字符參數(shù)對(duì)上述系統(tǒng)服務(wù)中的上述服務(wù)進(jìn)程進(jìn)行累加運(yùn)算。
[0013]進(jìn)一步地,當(dāng)上述服務(wù)重載狀態(tài)為上述關(guān)閉狀態(tài)時(shí),上述方法還包括:對(duì)上述第二服務(wù)進(jìn)程的套接字的標(biāo)記進(jìn)行還原重置處理。
[0014]進(jìn)一步地,當(dāng)上述進(jìn)程屬性通過用于描述服務(wù)進(jìn)程的創(chuàng)建時(shí)間的時(shí)間參數(shù)實(shí)現(xiàn)時(shí),根據(jù)上述進(jìn)程屬性,確定在上述系統(tǒng)服務(wù)中用于應(yīng)答上述調(diào)用請(qǐng)求的上述服務(wù)進(jìn)程包括:將所有服務(wù)進(jìn)程的時(shí)間參數(shù)分別與系統(tǒng)重啟時(shí)間進(jìn)行比較;根據(jù)比較結(jié)果,確定目標(biāo)服務(wù)進(jìn)程,其中,上述目標(biāo)服務(wù)進(jìn)程為時(shí)間參數(shù)與上述系統(tǒng)重啟時(shí)間之間的時(shí)間差為正值的服務(wù)進(jìn)程;從上述目標(biāo)服務(wù)進(jìn)程中任意選定一個(gè)進(jìn)程作為應(yīng)答上述調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0015]根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種系統(tǒng)服務(wù)的重載裝置,包括:接收模塊,用于接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求,其中,上述系統(tǒng)服務(wù)中至少包括兩條具有相同配置信息的服務(wù)進(jìn)程;處理模塊,用于根據(jù)預(yù)先設(shè)置的服務(wù)重載狀態(tài),判斷是否對(duì)上述系統(tǒng)服務(wù)進(jìn)行重載,其中,上述服務(wù)重載狀態(tài)至少包括:開啟狀態(tài)和關(guān)閉狀態(tài);第一獲取模塊,用于當(dāng)上述服務(wù)重載狀態(tài)為上述開啟狀態(tài)時(shí),獲取與上述服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程屬性,其中,上述進(jìn)程屬性用于標(biāo)記創(chuàng)建上述服務(wù)進(jìn)程的先后順序;確定模塊,用于根據(jù)上述進(jìn)程屬性,確定在上述系統(tǒng)服務(wù)中用于應(yīng)答上述調(diào)用請(qǐng)求的上述服務(wù)進(jìn)程。
[0016]進(jìn)一步地,上述裝置還包括:第二獲取模塊,用于獲取正在運(yùn)行中的第一服務(wù)進(jìn)程的上述配置信息,其中,上述配置信息至少包括與上述第一服務(wù)進(jìn)程對(duì)應(yīng)的套接字;創(chuàng)建模塊,用于根據(jù)上述配置信息,創(chuàng)建第二服務(wù)進(jìn)程;第一設(shè)置模塊,用于將上述服務(wù)重載狀態(tài)設(shè)置為上述開啟狀態(tài);第二設(shè)置模塊,用于設(shè)置上述服務(wù)重載狀態(tài)為上述關(guān)閉狀態(tài);終止模塊,用于結(jié)束未用于應(yīng)答上述調(diào)用請(qǐng)求的上述服務(wù)進(jìn)程。
[0017]進(jìn)一步地,當(dāng)上述進(jìn)程屬性通過字符參數(shù)實(shí)現(xiàn)時(shí),上述裝置還包括:第一標(biāo)記模塊,用于在與上述第二服務(wù)進(jìn)程對(duì)應(yīng)的上述配置信息中設(shè)置上述字符參數(shù),其中,上述字符參數(shù)用于對(duì)新創(chuàng)建的上述服務(wù)進(jìn)程進(jìn)行標(biāo)記。
[0018]進(jìn)一步地,上述確定模塊包括:運(yùn)算單元,用于根據(jù)上述字符參數(shù)對(duì)上述系統(tǒng)服務(wù)中的上述服務(wù)進(jìn)程進(jìn)行運(yùn)算處理,得到與上述服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程運(yùn)算值;第一確定單元,用于根據(jù)上述運(yùn)算計(jì)算值,確定用于應(yīng)答上述調(diào)用請(qǐng)求的上述服務(wù)進(jìn)程。
[0019]進(jìn)一步地,上述運(yùn)算單元還用于:根據(jù)上述字符參數(shù)對(duì)上述系統(tǒng)服務(wù)中的上述服務(wù)進(jìn)程進(jìn)行加權(quán)運(yùn)算;和/或根據(jù)上述字符參數(shù)對(duì)上述系統(tǒng)服務(wù)中的上述服務(wù)進(jìn)程進(jìn)行累加運(yùn)算。
[0020]進(jìn)一步地,當(dāng)上述服務(wù)重載狀態(tài)為上述關(guān)閉狀態(tài)時(shí),上述裝置還包括:標(biāo)記還原模塊,用于對(duì)上述第二服務(wù)進(jìn)程的套接字的標(biāo)記進(jìn)行還原重置處理。
[0021]進(jìn)一步地,當(dāng)上述進(jìn)程屬性通過用于描述服務(wù)進(jìn)程的創(chuàng)建時(shí)間的時(shí)間參數(shù)實(shí)現(xiàn)時(shí),上述確定模塊包括:比較單元,用于將所有服務(wù)進(jìn)程的時(shí)間參數(shù)分別與系統(tǒng)重啟時(shí)間進(jìn)行比較;第二確定單元,用于根據(jù)比較結(jié)果,確定目標(biāo)服務(wù)進(jìn)程,其中,上述目標(biāo)服務(wù)進(jìn)程為時(shí)間參數(shù)與上述系統(tǒng)重啟時(shí)間之間的時(shí)間差為正值的服務(wù)進(jìn)程;選擇單元,用于從上述目標(biāo)服務(wù)進(jìn)程中任意選定一個(gè)進(jìn)程作為應(yīng)答上述調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0022]在本發(fā)明實(shí)施例中,采用接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求,其中,系統(tǒng)服務(wù)中至少包括兩條具有相同配置信息的服務(wù)進(jìn)程;根據(jù)預(yù)先設(shè)置的服務(wù)重載狀態(tài),判斷是否對(duì)系統(tǒng)服務(wù)進(jìn)行重載,其中,服務(wù)重載狀態(tài)至少包括:開啟狀態(tài)和關(guān)閉狀態(tài);當(dāng)服務(wù)重載狀態(tài)為開啟狀態(tài)時(shí),獲取與服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程屬性,其中,進(jìn)程屬性用于標(biāo)記創(chuàng)建服務(wù)進(jìn)程的先后順序;根據(jù)進(jìn)程屬性,確定在系統(tǒng)服務(wù)中用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程的方式,達(dá)到了對(duì)服務(wù)進(jìn)程進(jìn)行選擇的目的,從而實(shí)現(xiàn)了不間斷的對(duì)系統(tǒng)服務(wù)進(jìn)行更新的技術(shù)效果,進(jìn)而解決了由于系統(tǒng)服務(wù)重載,導(dǎo)致重載期間內(nèi)的系統(tǒng)服務(wù)時(shí)延長(zhǎng)的技術(shù)問題。
【附圖說明】
[0023]此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0024]圖1是根據(jù)本發(fā)明實(shí)施例的一種可選的系統(tǒng)服務(wù)的重載方法的流程圖;
[0025]圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的系統(tǒng)服務(wù)的重載方法的流程圖;
[0026]圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的系統(tǒng)服務(wù)的重載裝置的示意圖;
[0027]圖4是根據(jù)本發(fā)明實(shí)施例的一種可選的系統(tǒng)服務(wù)的重載裝置的示意圖。
【具體實(shí)施方式】
[0028]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0029]需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0030]根據(jù)本發(fā)明實(shí)施例,提供了一種系統(tǒng)服務(wù)的重載方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0031]圖1是根據(jù)本發(fā)明實(shí)施例的系統(tǒng)服務(wù)的重載的流程圖,如圖1所示,該方法包括如下步驟:
[0032]步驟S21,接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求,其中,系統(tǒng)服務(wù)中至少包括兩條具有相同配置信息的服務(wù)進(jìn)程,配置信息至少用于記錄端口信息和套接字信息。
[0033]具體的,在操作系統(tǒng)中,往往利用系統(tǒng)服務(wù)來實(shí)現(xiàn)各種各樣的特定功能。而在對(duì)系統(tǒng)服務(wù)進(jìn)行更新的過程中,為了降低由于更新而對(duì)系統(tǒng)服務(wù)實(shí)現(xiàn)的功能的影響,可以在結(jié)束原有服務(wù)進(jìn)程之前,先創(chuàng)建一個(gè)與原有服務(wù)進(jìn)程的配置信息相同的服務(wù)進(jìn)程,并與原有服務(wù)進(jìn)程同時(shí)運(yùn)行一段時(shí)間。當(dāng)新創(chuàng)建的服務(wù)進(jìn)程成功創(chuàng)建并啟動(dòng)后,再結(jié)束原有服務(wù)進(jìn)程。
[0034]步驟S23,根據(jù)預(yù)先設(shè)置的服務(wù)重載狀態(tài),判斷是否對(duì)系統(tǒng)服務(wù)進(jìn)行重載,其中,月艮務(wù)重載狀態(tài)至少包括:開啟狀態(tài)和關(guān)閉狀態(tài)。
[0035]具體的,在對(duì)系統(tǒng)服務(wù)進(jìn)行更新之前,可以預(yù)先設(shè)置更新標(biāo)識(shí),S卩服務(wù)重載狀態(tài)標(biāo)識(shí)。在對(duì)系統(tǒng)服務(wù)進(jìn)行調(diào)用時(shí),通過讀取服務(wù)重載狀態(tài),判斷系統(tǒng)服務(wù)是否處于更新狀態(tài)。其中,開啟狀態(tài)用于標(biāo)識(shí)系統(tǒng)服務(wù)正在處于重載狀態(tài),而關(guān)閉狀態(tài)用于標(biāo)識(shí)系統(tǒng)服務(wù)未處于重載狀態(tài)。
[0036]步驟S25,當(dāng)服務(wù)重載狀態(tài)為開啟狀態(tài)時(shí),獲取與服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程屬性,其中,進(jìn)程屬性用于標(biāo)記創(chuàng)建服務(wù)進(jìn)程的先后順序。
[0037]具體的,在對(duì)服務(wù)重載狀態(tài)為開啟狀態(tài)時(shí),說明此時(shí)系統(tǒng)服務(wù)中可能存在至少兩個(gè)擁有同樣配置信息的服務(wù)進(jìn)程。為了使調(diào)用請(qǐng)求可以正常的發(fā)送至新創(chuàng)建的服務(wù)進(jìn)程中,可以在調(diào)用之前獲取在創(chuàng)建時(shí)記錄的進(jìn)程屬性。通過進(jìn)程屬性判斷擁有相同配置信息的各服務(wù)進(jìn)程的創(chuàng)建順序,以區(qū)分原有服務(wù)進(jìn)程和新創(chuàng)建服務(wù)進(jìn)程。
[0038]步驟S27,根據(jù)進(jìn)程屬性,確定在系統(tǒng)服務(wù)中用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0039]具體的,在根據(jù)與服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程屬性,確定服務(wù)進(jìn)程創(chuàng)建的先后順序之后,將調(diào)用請(qǐng)求發(fā)送至后創(chuàng)建的服務(wù)進(jìn)程當(dāng)中,以避免在更新結(jié)束后由于原有服務(wù)進(jìn)程關(guān)閉導(dǎo)致的系統(tǒng)服務(wù)中斷情況的發(fā)生。
[0040]通過上述步驟S21至步驟S27,可以實(shí)現(xiàn)在具有相同配置信息的新創(chuàng)建的服務(wù)進(jìn)程和原有的服務(wù)進(jìn)程同時(shí)運(yùn)行時(shí),通過進(jìn)程屬性對(duì)新創(chuàng)建的服務(wù)進(jìn)程和原有的服務(wù)進(jìn)程進(jìn)行區(qū)分。并將此時(shí)接收到的調(diào)用請(qǐng)求全部通過新創(chuàng)建的服務(wù)進(jìn)程進(jìn)行處理,從而達(dá)到了對(duì)服務(wù)進(jìn)程進(jìn)行選擇的目的,從而實(shí)現(xiàn)了不間斷的對(duì)系統(tǒng)服務(wù)進(jìn)行更新的技術(shù)效果,進(jìn)而解決了由于系統(tǒng)服務(wù)重載,導(dǎo)致重載期間內(nèi)的系統(tǒng)服務(wù)時(shí)延長(zhǎng)的技術(shù)問題。
[0041]在實(shí)際應(yīng)用當(dāng)中,以Linux系統(tǒng)的網(wǎng)絡(luò)服務(wù)為例進(jìn)行說明。當(dāng)Linux系統(tǒng)的系統(tǒng)內(nèi)核接收到一個(gè)向系統(tǒng)發(fā)送的新的用于建立TCP連接的連接請(qǐng)求時(shí),系統(tǒng)接收到客戶端發(fā)送的5¥1'1報(bào)文后,將調(diào)用_1]161:_1001^卯_118〖61161'()函數(shù)查找需要將此3¥1'1報(bào)文分配給哪個(gè)監(jiān)聽套接字(Listening socket),各個(gè)監(jiān)聽套接字對(duì)應(yīng)著各個(gè)服務(wù)進(jìn)程。在查找并確定監(jiān)聽套接字(即對(duì)應(yīng)的服務(wù)進(jìn)程)后,系統(tǒng)內(nèi)核會(huì)根據(jù)SYN報(bào)文中指定的目的網(wǎng)絡(luò)端口和IP地址等信息,通過加權(quán)計(jì)分的方法選擇與SYN報(bào)文相匹配的系統(tǒng)進(jìn)程。而對(duì)于啟用了 S0_REUSEP0RT選項(xiàng)后,系統(tǒng)服務(wù)中會(huì)存在綁定到相同IP地址和網(wǎng)絡(luò)端口的若干個(gè)套接字,由于這些與監(jiān)聽套接字中的各選項(xiàng)參數(shù)都相同,所以通過加權(quán)計(jì)分的方法計(jì)算得出的權(quán)重也是相同的。此時(shí)系統(tǒng)內(nèi)核會(huì)在所有得分相同的監(jiān)聽套接字中,隨機(jī)選擇一個(gè)與監(jiān)聽套接字對(duì)應(yīng)的服務(wù)進(jìn)程。
[0042]因此,可以在監(jiān)聽套接字中的選項(xiàng)參數(shù)中加入用于標(biāo)記服務(wù)進(jìn)程創(chuàng)建先后的進(jìn)程屬性,使系統(tǒng)內(nèi)核可以在若干個(gè)使用S0_REUSEP0RT選項(xiàng),并具有相同IP地址和網(wǎng)絡(luò)端口的監(jiān)聽套接字中進(jìn)行選擇時(shí),從而可以利用進(jìn)程屬性確定最新啟動(dòng)的服務(wù)進(jìn)程對(duì)應(yīng)的監(jiān)聽套接字。
[0043]作為一種可選的實(shí)施方式,如圖2所示,在步驟S21接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求之前,上述方法還可以包括:
[0044]步驟S201,獲取正在運(yùn)行中的第一服務(wù)進(jìn)程的配置信息,其中,配置信息至少包括與第一服務(wù)進(jìn)程對(duì)應(yīng)的套接字。
[0045]步驟S203,根據(jù)配置信息,創(chuàng)建第二服務(wù)進(jìn)程。
[0046]步驟S205,將服務(wù)重載狀態(tài)設(shè)置為開啟狀態(tài)。
[0047]以及,在步驟S27根據(jù)進(jìn)程屬性,確定在系統(tǒng)服務(wù)中用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程之后,上述方法還可以包括:
[0048]步驟S28,設(shè)置服務(wù)重載狀態(tài)為關(guān)閉狀態(tài)。
[0049]步驟S29,結(jié)束未用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0050]具體的,在對(duì)服務(wù)進(jìn)程進(jìn)行更新之前,可以通過步驟S201至步驟S205,按照原有的第一服務(wù)進(jìn)程的配置信息對(duì)新創(chuàng)建的第二服務(wù)進(jìn)程進(jìn)行配置,從而創(chuàng)建得到具有與第一服務(wù)進(jìn)程相同監(jiān)聽套接字的第二服務(wù)進(jìn)程。在創(chuàng)建得到第二服務(wù)進(jìn)程后,在操作系統(tǒng)中進(jìn)行狀態(tài)標(biāo)記,將服務(wù)重載狀態(tài)設(shè)置為開啟狀態(tài)。從而系統(tǒng)可以通過服務(wù)重載狀態(tài)在對(duì)服務(wù)進(jìn)程進(jìn)行調(diào)用之前,確定該系統(tǒng)服務(wù)是處于重載狀態(tài)。以及,在系統(tǒng)服務(wù)完成重載之后,可以通過上述步驟S28至步驟S29,將服務(wù)重載狀態(tài)設(shè)置為關(guān)閉狀態(tài),并結(jié)束系統(tǒng)服務(wù)中原有的服務(wù)進(jìn)程。
[0051]作為一種可選的實(shí)施方式,當(dāng)進(jìn)程屬性通過字符參數(shù)實(shí)現(xiàn)時(shí),在步驟S203根據(jù)配置信息,創(chuàng)建第二服務(wù)進(jìn)程之后,方法還可以包括:
[0052]步驟S204a,在與第二服務(wù)進(jìn)程對(duì)應(yīng)的配置信息中設(shè)置字符參數(shù),其中,字符參數(shù)用于對(duì)新創(chuàng)建的服務(wù)進(jìn)程的套接字進(jìn)行標(biāo)記。
[0053]具體的,可以通過步驟S204a在配置信息中設(shè)置用于標(biāo)識(shí)服務(wù)進(jìn)程創(chuàng)建先后順序的成員變量??蛇x的,成員變量的類型可以是整形數(shù)字,也可以是字符串類型,當(dāng)然還可以為布爾類型。通過成員變量,對(duì)新創(chuàng)建的服務(wù)進(jìn)程與原有的服務(wù)進(jìn)程進(jìn)行區(qū)分。
[0054]作為一種可選的實(shí)施方式,在步驟S27根據(jù)進(jìn)程屬性,確定在系統(tǒng)服務(wù)中用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程中,可以包括:
[0055]步驟S271a,根據(jù)字符參數(shù)對(duì)系統(tǒng)服務(wù)中的服務(wù)進(jìn)程進(jìn)行運(yùn)算處理,得到與服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程運(yùn)算值。
[0056]步驟S273a,根據(jù)運(yùn)算計(jì)算值,確定用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0057]具體的,通過步驟S271a至步驟S273a,在系統(tǒng)對(duì)服務(wù)進(jìn)程進(jìn)行加權(quán)運(yùn)算時(shí),將進(jìn)程屬性的數(shù)值納入到服務(wù)進(jìn)程權(quán)重值的計(jì)算范圍內(nèi),從而可以從具有相同配置信息的服務(wù)進(jìn)程中,確定新創(chuàng)建的服務(wù)進(jìn)程。
[0058]作為一種可選的實(shí)施方式,根據(jù)字符參數(shù)對(duì)系統(tǒng)服務(wù)中的服務(wù)進(jìn)程進(jìn)行運(yùn)算處理包括:根據(jù)字符參數(shù)對(duì)系統(tǒng)服務(wù)中的服務(wù)進(jìn)程進(jìn)行加權(quán)運(yùn)算;和/或根據(jù)字符參數(shù)對(duì)系統(tǒng)服務(wù)中的服務(wù)進(jìn)程進(jìn)行累加運(yùn)算。
[0059]作為一種可選的實(shí)施方式,當(dāng)服務(wù)重載狀態(tài)為關(guān)閉狀態(tài)時(shí),方法還包括:對(duì)第二服務(wù)進(jìn)程的套接字的標(biāo)記進(jìn)行還原重置處理。這樣,通過將標(biāo)記進(jìn)行復(fù)原處理,可以避免下次重啟進(jìn)程出現(xiàn)混亂甚至崩潰的問題。
[0060]作為一種可選的實(shí)施方式,當(dāng)進(jìn)程屬性通過用于描述服務(wù)進(jìn)程的創(chuàng)建時(shí)間的時(shí)間參數(shù)實(shí)現(xiàn)時(shí),根據(jù)進(jìn)程屬性,確定在系統(tǒng)服務(wù)中用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程包括:將所有服務(wù)進(jìn)程的時(shí)間參數(shù)分別與系統(tǒng)重啟時(shí)間進(jìn)行比較;根據(jù)比較結(jié)果,確定目標(biāo)服務(wù)進(jìn)程,其中,目標(biāo)服務(wù)進(jìn)程為時(shí)間參數(shù)與系統(tǒng)重啟時(shí)間之間的時(shí)間差為正值的服務(wù)進(jìn)程;從目標(biāo)服務(wù)進(jìn)程中任意選定一個(gè)進(jìn)程作為應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0061]具體的,通過上述實(shí)施例,可以通過比較各個(gè)服務(wù)進(jìn)程的時(shí)間參數(shù)與當(dāng)前的系統(tǒng)重啟時(shí)間,得到對(duì)應(yīng)的時(shí)間差,進(jìn)而確定時(shí)間差為正值的服務(wù)進(jìn)程,并將它們作為目標(biāo)服務(wù)進(jìn)程,由于時(shí)間差為正值的服務(wù)進(jìn)程都是新進(jìn)程,這樣,可以從這些新進(jìn)程中任意選擇一個(gè)作為應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0062]在實(shí)際應(yīng)用當(dāng)中,還以Linux系統(tǒng)的網(wǎng)絡(luò)服務(wù)為例進(jìn)行說明。當(dāng)接收到SYN報(bào)文后,通過查詢與服務(wù)進(jìn)程相關(guān)的配置信息,確定服務(wù)進(jìn)程的創(chuàng)建時(shí)間。與此同時(shí),獲取操作系統(tǒng)當(dāng)前的系統(tǒng)時(shí)間,并利用當(dāng)前的系統(tǒng)時(shí)間與各服務(wù)進(jìn)程對(duì)應(yīng)的創(chuàng)建時(shí)間,確定得到最新創(chuàng)建的服務(wù)進(jìn)程,并將該服務(wù)進(jìn)程作為用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0063]作為一種可選的實(shí)施方式,在Linux操作系統(tǒng)中,/proc文件系統(tǒng)是一個(gè)虛擬文件系統(tǒng),可以通過這個(gè)虛擬文件系統(tǒng)在Linux系統(tǒng)的內(nèi)核空間和用戶空間之間進(jìn)行通信。
[0064]首先,可以在/proc文件系統(tǒng)中增加一個(gè)內(nèi)核配置選項(xiàng),作為控制連接分配行為的開關(guān),例如:/proc/sys/net/ipv4/reuseport_mark_new。當(dāng)此選項(xiàng)被設(shè)置為0(默認(rèn)值)時(shí),系統(tǒng)內(nèi)核的執(zhí)行行為保持不變。而當(dāng)此選項(xiàng)被設(shè)置為I時(shí),內(nèi)核將會(huì)對(duì)新創(chuàng)建的服務(wù)進(jìn)程的監(jiān)聽套接字進(jìn)行標(biāo)記。同時(shí),在Linux系統(tǒng)內(nèi)核代碼中,struct sock的結(jié)構(gòu)體用于保存套接字的相關(guān)配置信息??梢栽趕truct sock結(jié)構(gòu)體中增加一個(gè)新的成員變量,通過該成員變量來實(shí)現(xiàn)對(duì)新創(chuàng)建服務(wù)進(jìn)程的套接字進(jìn)行標(biāo)記。
[0065]然后,當(dāng)執(zhí)行重載網(wǎng)絡(luò)服務(wù)之前,將proc文件系統(tǒng)中的reuseport_mark_new內(nèi)核選項(xiàng)設(shè)置為I,從而告知Linux系統(tǒng)內(nèi)核開始對(duì)新創(chuàng)建的套接字進(jìn)行標(biāo)記。當(dāng)有新的客戶端向Linux系統(tǒng)發(fā)送新的SYN連接時(shí),可以通過struct sock結(jié)構(gòu)體中成員變量對(duì)其加以標(biāo)記。[ΟΟ??] 此時(shí),執(zhí)行網(wǎng)絡(luò)服務(wù)重載腳本。在利用」net_lookup_listener()函數(shù)計(jì)算與套接字對(duì)應(yīng)的服務(wù)進(jìn)程的權(quán)重時(shí),將對(duì)被標(biāo)記的新創(chuàng)建的服務(wù)進(jìn)程的套接字賦予額外的權(quán)重值,從而使其在具有相同配置信息中選擇出來,并成為用于處理新的網(wǎng)絡(luò)連接的SYN報(bào)文的套接字。而原有服務(wù)進(jìn)程的套接字由于未被標(biāo)記,不會(huì)獲得額外的權(quán)重值,從而不會(huì)被選中來處理新的SYN報(bào)文。因此,這保證了在對(duì)系統(tǒng)服務(wù)進(jìn)行重載時(shí),SYN報(bào)文只會(huì)被交付給新創(chuàng)建的服務(wù)進(jìn)程進(jìn)行處理。
[0067]當(dāng)網(wǎng)絡(luò)服務(wù)重載完成后,再將proc文件系統(tǒng)中的reuseport_mark_new內(nèi)核選項(xiàng)設(shè)置為O,使系統(tǒng)內(nèi)核恢復(fù)至標(biāo)準(zhǔn)行為。
[0068]根據(jù)本發(fā)明實(shí)施例,還提供了一種系統(tǒng)服務(wù)的重載裝置。圖3是根據(jù)本申請(qǐng)實(shí)施例的系統(tǒng)服務(wù)的重載裝置的示意圖。
[0069]如圖3所示,該裝置可以包括:接收模塊21、處理模塊23、第一獲取模塊25和確定模塊27 ο
[0070]其中,接收模塊21,用于接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求,其中,系統(tǒng)服務(wù)中至少包括兩條具有相同配置信息的服務(wù)進(jìn)程,配置信息至少用于記錄端口信息和套接字信息;處理模塊23,用于根據(jù)預(yù)先設(shè)置的服務(wù)重載狀態(tài),判斷是否對(duì)系統(tǒng)服務(wù)進(jìn)行重載,其中,服務(wù)重載狀態(tài)至少包括:開啟狀態(tài)和關(guān)閉狀態(tài);第一獲取模塊25,用于當(dāng)服務(wù)重載狀態(tài)為開啟狀態(tài)時(shí),獲取與服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程屬性,其中,進(jìn)程屬性用于標(biāo)記創(chuàng)建服務(wù)進(jìn)程的先后順序;確定模塊27,用于根據(jù)進(jìn)程屬性,確定在系統(tǒng)服務(wù)中用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0071]通過上述接收模塊21、處理模塊23、第一獲取模塊25和確定模塊27,可以實(shí)現(xiàn)在具有相同配置信息的新創(chuàng)建的服務(wù)進(jìn)程和原有的服務(wù)進(jìn)程同時(shí)運(yùn)行時(shí),通過進(jìn)程屬性對(duì)新創(chuàng)建的服務(wù)進(jìn)程和原有的服務(wù)進(jìn)程進(jìn)行區(qū)分。并將此時(shí)接收到的調(diào)用請(qǐng)求全部通過新創(chuàng)建的服務(wù)進(jìn)程進(jìn)行處理,從而達(dá)到了對(duì)服務(wù)進(jìn)程進(jìn)行選擇的目的,從而實(shí)現(xiàn)了不間斷的對(duì)系統(tǒng)服務(wù)進(jìn)行更新的技術(shù)效果,進(jìn)而解決了由于系統(tǒng)服務(wù)重載,導(dǎo)致重載期間內(nèi)的系統(tǒng)服務(wù)時(shí)延長(zhǎng)的技術(shù)問題。
[0072]作為一種可選的實(shí)施方式,如圖4所示,裝置還包括:第二獲取模塊201、創(chuàng)建模塊203和第一設(shè)置模塊205、第二設(shè)置模塊28和終止模塊29。
[0073]其中,第二獲取模塊201,用于獲取正在運(yùn)行中的第一服務(wù)進(jìn)程的配置信息,其中,配置信息至少包括與第一服務(wù)進(jìn)程對(duì)應(yīng)的套接字;創(chuàng)建模塊203,用于根據(jù)配置信息,創(chuàng)建第二服務(wù)進(jìn)程;第一設(shè)置模塊205,用于將服務(wù)重載狀態(tài)設(shè)置為開啟狀態(tài)以及,第二設(shè)置模塊28,用于設(shè)置服務(wù)重載狀態(tài)為關(guān)閉狀態(tài);終止模塊29,用于結(jié)束未用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0074]具體的,在對(duì)服務(wù)進(jìn)程進(jìn)行更新之前,可以通過上述第二獲取模塊201、創(chuàng)建模塊203和第一設(shè)置模塊205,按照原有的第一服務(wù)進(jìn)程的配置信息對(duì)新創(chuàng)建的第二服務(wù)進(jìn)程進(jìn)行配置,從而創(chuàng)建得到具有與第一服務(wù)進(jìn)程相同監(jiān)聽套接字的第二服務(wù)進(jìn)程。在創(chuàng)建得到第二服務(wù)進(jìn)程后,在操作系統(tǒng)中進(jìn)行狀態(tài)標(biāo)記,將服務(wù)重載狀態(tài)設(shè)置為開啟狀態(tài)。從而系統(tǒng)可以通過服務(wù)重載狀態(tài)在對(duì)服務(wù)進(jìn)程進(jìn)行調(diào)用之前,確定該系統(tǒng)服務(wù)是處于重載狀態(tài)。以及在系統(tǒng)服務(wù)完成重載之后,可以通過上述第二設(shè)置模塊28和終止模塊29,將服務(wù)重載狀態(tài)設(shè)置為關(guān)閉狀態(tài),并結(jié)束系統(tǒng)服務(wù)中原有的服務(wù)進(jìn)程。
[0075]作為一種可選的實(shí)施方式,當(dāng)進(jìn)程屬性通過字符參數(shù)實(shí)現(xiàn)時(shí),上述裝置還可以包括:第一標(biāo)記模塊。
[0076]其中,第一標(biāo)記模塊,用于在與第二服務(wù)進(jìn)程對(duì)應(yīng)的配置信息中設(shè)置字符參數(shù),其中,字符參數(shù)用于對(duì)新創(chuàng)建的服務(wù)進(jìn)程的套接字進(jìn)行標(biāo)記。
[0077]具體的,可以通過第一標(biāo)記模塊在配置信息中設(shè)置用于標(biāo)識(shí)服務(wù)進(jìn)程創(chuàng)建先后順序的成員變量??蛇x的,成員變量的類型可以是整形數(shù)字,也可以是字符串類型,當(dāng)然還可以為布爾類型。通過成員變量,對(duì)新創(chuàng)建的服務(wù)進(jìn)程與原有的服務(wù)進(jìn)程進(jìn)行區(qū)分。
[0078]作為一種可選的實(shí)施方式,確定模塊包括:運(yùn)算單元,用于根據(jù)字符參數(shù)對(duì)系統(tǒng)服務(wù)中的服務(wù)進(jìn)程進(jìn)行運(yùn)算處理,得到與服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程運(yùn)算值;第一確定單元,用于根據(jù)運(yùn)算計(jì)算值,確定用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0079]作為一種可選的實(shí)施方式,當(dāng)進(jìn)程屬性通過字符參數(shù)實(shí)現(xiàn)時(shí),裝置還包括:第一標(biāo)記模塊,用于在與第二服務(wù)進(jìn)程對(duì)應(yīng)的配置信息中設(shè)置字符參數(shù),其中,字符參數(shù)用于對(duì)新創(chuàng)建的服務(wù)進(jìn)程進(jìn)行標(biāo)記。
[0080]作為一種可選的實(shí)施方式,確定模塊包括:運(yùn)算單元,用于根據(jù)字符參數(shù)對(duì)系統(tǒng)服務(wù)中的服務(wù)進(jìn)程進(jìn)行運(yùn)算處理,得到與服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程運(yùn)算值,其中,運(yùn)算處理的運(yùn)算方式包括加權(quán)運(yùn)算和/或累加運(yùn)算;確定單元,用于根據(jù)運(yùn)算計(jì)算值,確定用于應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0081]作為一種可選的實(shí)施方式,裝置還包括:第三設(shè)置模塊,當(dāng)進(jìn)程屬性通過時(shí)間參數(shù)實(shí)現(xiàn)時(shí),在根據(jù)配置信息,創(chuàng)建第二服務(wù)進(jìn)程之后,在與第二服務(wù)進(jìn)程對(duì)應(yīng)的配置信息中設(shè)置對(duì)應(yīng)的時(shí)間參數(shù),其中,對(duì)應(yīng)的時(shí)間參數(shù)為第二服務(wù)進(jìn)程的創(chuàng)建時(shí)間,確定模塊包括:獲取單元,用于獲取系統(tǒng)的當(dāng)前時(shí)間;計(jì)算單元,用于計(jì)算系統(tǒng)的當(dāng)前時(shí)間與對(duì)應(yīng)的時(shí)間參數(shù)之間的時(shí)間差;查找單元,用于根據(jù)計(jì)算得到的時(shí)間差,找到第二服務(wù)進(jìn)程,并將第二服務(wù)進(jìn)程作為應(yīng)答調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
[0082]其中,裝置部分實(shí)施例中的功能單元和/或模塊與方法部分對(duì)應(yīng)實(shí)施例中的步驟實(shí)現(xiàn)的功能與達(dá)到的技術(shù)效果類似,在此不再贅述。
[0083]上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0084]在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
[0085]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
[0086]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0087]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0088]所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0089]以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種系統(tǒng)服務(wù)的重載方法,其特征在于,包括: 接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求,其中,所述系統(tǒng)服務(wù)中至少包括兩條具有相同配置信息的服務(wù)進(jìn)程,所述配置信息至少用于記錄端口信息和套接字信息; 根據(jù)預(yù)先設(shè)置的服務(wù)重載狀態(tài),判斷是否對(duì)所述系統(tǒng)服務(wù)進(jìn)行重載,其中,所述服務(wù)重載狀態(tài)至少包括:開啟狀態(tài)和關(guān)閉狀態(tài); 當(dāng)所述服務(wù)重載狀態(tài)為所述開啟狀態(tài)時(shí),獲取與所述服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程屬性,其中,所述進(jìn)程屬性用于標(biāo)記創(chuàng)建所述服務(wù)進(jìn)程的先后順序; 根據(jù)所述進(jìn)程屬性,確定在所述系統(tǒng)服務(wù)中用于應(yīng)答所述調(diào)用請(qǐng)求的所述服務(wù)進(jìn)程。2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 在接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求之前,所述方法還包括: 獲取正在運(yùn)行中的第一服務(wù)進(jìn)程的所述配置信息,其中,所述配置信息至少包括與所述第一服務(wù)進(jìn)程對(duì)應(yīng)的套接字; 根據(jù)所述配置信息,創(chuàng)建第二服務(wù)進(jìn)程; 將所述服務(wù)重載狀態(tài)設(shè)置為所述開啟狀態(tài); 以及,在根據(jù)所述進(jìn)程屬性,確定在所述系統(tǒng)服務(wù)中用于應(yīng)答所述調(diào)用請(qǐng)求的所述服務(wù)進(jìn)程之后,所述方法還包括: 設(shè)置所述服務(wù)重載狀態(tài)為所述關(guān)閉狀態(tài); 結(jié)束未用于應(yīng)答所述調(diào)用請(qǐng)求的所述服務(wù)進(jìn)程。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)所述進(jìn)程屬性通過字符參數(shù)實(shí)現(xiàn)時(shí),在根據(jù)所述配置信息,創(chuàng)建第二服務(wù)進(jìn)程之后,所述方法還包括: 在與所述第二服務(wù)進(jìn)程對(duì)應(yīng)的所述配置信息中設(shè)置所述字符參數(shù),其中,所述字符參數(shù)用于對(duì)新創(chuàng)建的所述服務(wù)進(jìn)程的套接字進(jìn)行標(biāo)記。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,根據(jù)所述進(jìn)程屬性,確定在所述系統(tǒng)服務(wù)中用于應(yīng)答所述調(diào)用請(qǐng)求的所述服務(wù)進(jìn)程,包括: 根據(jù)所述字符參數(shù)對(duì)所述系統(tǒng)服務(wù)中的所述服務(wù)進(jìn)程進(jìn)行運(yùn)算處理,得到與所述服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程運(yùn)算值; 根據(jù)所述運(yùn)算計(jì)算值,確定用于應(yīng)答所述調(diào)用請(qǐng)求的所述服務(wù)進(jìn)程。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,根據(jù)所述字符參數(shù)對(duì)所述系統(tǒng)服務(wù)中的所述服務(wù)進(jìn)程進(jìn)行運(yùn)算處理包括: 根據(jù)所述字符參數(shù)對(duì)所述系統(tǒng)服務(wù)中的所述服務(wù)進(jìn)程進(jìn)行加權(quán)運(yùn)算;和/或 根據(jù)所述字符參數(shù)對(duì)所述系統(tǒng)服務(wù)中的所述服務(wù)進(jìn)程進(jìn)行累加運(yùn)算。6.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)所述服務(wù)重載狀態(tài)為所述關(guān)閉狀態(tài)時(shí),所述方法還包括: 對(duì)所述第二服務(wù)進(jìn)程的套接字的標(biāo)記進(jìn)行還原重置處理。7.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述進(jìn)程屬性通過用于描述服務(wù)進(jìn)程的創(chuàng)建時(shí)間的時(shí)間參數(shù)實(shí)現(xiàn)時(shí),根據(jù)所述進(jìn)程屬性,確定在所述系統(tǒng)服務(wù)中用于應(yīng)答所述調(diào)用請(qǐng)求的所述服務(wù)進(jìn)程包括: 將所有服務(wù)進(jìn)程的時(shí)間參數(shù)分別與系統(tǒng)重啟時(shí)間進(jìn)行比較; 根據(jù)比較結(jié)果,確定目標(biāo)服務(wù)進(jìn)程,其中,所述目標(biāo)服務(wù)進(jìn)程為時(shí)間參數(shù)與所述系統(tǒng)重啟時(shí)間之間的時(shí)間差為正值的服務(wù)進(jìn)程; 從所述目標(biāo)服務(wù)進(jìn)程中任意選定一個(gè)進(jìn)程作為應(yīng)答所述調(diào)用請(qǐng)求的服務(wù)進(jìn)程。8.一種系統(tǒng)服務(wù)的重載裝置,其特征在于,包括: 接收模塊,用于接收用于調(diào)用系統(tǒng)服務(wù)的調(diào)用請(qǐng)求,其中,所述系統(tǒng)服務(wù)中至少包括兩條具有相同配置信息的服務(wù)進(jìn)程; 處理模塊,用于根據(jù)預(yù)先設(shè)置的服務(wù)重載狀態(tài),判斷是否對(duì)所述系統(tǒng)服務(wù)進(jìn)行重載,其中,所述服務(wù)重載狀態(tài)至少包括:開啟狀態(tài)和關(guān)閉狀態(tài); 第一獲取模塊,用于當(dāng)所述服務(wù)重載狀態(tài)為所述開啟狀態(tài)時(shí),獲取與所述服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程屬性,其中,所述進(jìn)程屬性用于標(biāo)記創(chuàng)建所述服務(wù)進(jìn)程的先后順序; 確定模塊,用于根據(jù)所述進(jìn)程屬性,確定在所述系統(tǒng)服務(wù)中用于應(yīng)答所述調(diào)用請(qǐng)求的所述服務(wù)進(jìn)程。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 第二獲取模塊,用于獲取正在運(yùn)行中的第一服務(wù)進(jìn)程的所述配置信息,其中,所述配置信息至少包括與所述第一服務(wù)進(jìn)程對(duì)應(yīng)的套接字; 創(chuàng)建模塊,用于根據(jù)所述配置信息,創(chuàng)建第二服務(wù)進(jìn)程; 第一設(shè)置模塊,用于將所述服務(wù)重載狀態(tài)設(shè)置為所述開啟狀態(tài); 第二設(shè)置模塊,用于設(shè)置所述服務(wù)重載狀態(tài)為所述關(guān)閉狀態(tài); 終止模塊,用于結(jié)束未用于應(yīng)答所述調(diào)用請(qǐng)求的所述服務(wù)進(jìn)程。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,當(dāng)所述進(jìn)程屬性通過字符參數(shù)實(shí)現(xiàn)時(shí),所述裝置還包括: 第一標(biāo)記模塊,用于在與所述第二服務(wù)進(jìn)程對(duì)應(yīng)的所述配置信息中設(shè)置所述字符參數(shù),其中,所述字符參數(shù)用于對(duì)新創(chuàng)建的所述服務(wù)進(jìn)程進(jìn)行標(biāo)記。11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述確定模塊包括: 運(yùn)算單元,用于根據(jù)所述字符參數(shù)對(duì)所述系統(tǒng)服務(wù)中的所述服務(wù)進(jìn)程進(jìn)行運(yùn)算處理,得到與所述服務(wù)進(jìn)程對(duì)應(yīng)的進(jìn)程運(yùn)算值; 第一確定單元,用于根據(jù)所述運(yùn)算計(jì)算值,確定用于應(yīng)答所述調(diào)用請(qǐng)求的所述服務(wù)進(jìn)程。12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述運(yùn)算單元還用于: 根據(jù)所述字符參數(shù)對(duì)所述系統(tǒng)服務(wù)中的所述服務(wù)進(jìn)程進(jìn)行加權(quán)運(yùn)算;和/或 根據(jù)所述字符參數(shù)對(duì)所述系統(tǒng)服務(wù)中的所述服務(wù)進(jìn)程進(jìn)行累加運(yùn)算。13.根據(jù)權(quán)利要求10所述的方法,其特征在于,當(dāng)所述服務(wù)重載狀態(tài)為所述關(guān)閉狀態(tài)時(shí),所述裝置還包括: 標(biāo)記還原模塊,用于對(duì)所述第二服務(wù)進(jìn)程的套接字的標(biāo)記進(jìn)行還原重置處理。14.根據(jù)權(quán)利要求8所述的裝置,其特征在于,當(dāng)所述進(jìn)程屬性通過用于描述服務(wù)進(jìn)程的創(chuàng)建時(shí)間的時(shí)間參數(shù)實(shí)現(xiàn)時(shí),所述確定模塊包括: 比較單元,用于將所有服務(wù)進(jìn)程的時(shí)間參數(shù)分別與系統(tǒng)重啟時(shí)間進(jìn)行比較; 第二確定單元,用于根據(jù)比較結(jié)果,確定目標(biāo)服務(wù)進(jìn)程,其中,所述目標(biāo)服務(wù)進(jìn)程為時(shí)間參數(shù)與所述系統(tǒng)重啟時(shí)間之間的時(shí)間差為正值的服務(wù)進(jìn)程; 選擇單元,用于從所述目標(biāo)服務(wù)進(jìn)程中任意選定一個(gè)進(jìn)程作為應(yīng)答所述調(diào)用請(qǐng)求的服務(wù)進(jìn)程。
【文檔編號(hào)】G06F9/445GK105930191SQ201610278178
【公開日】2016年9月7日
【申請(qǐng)日】2016年4月28日
【發(fā)明人】洪珂, 陳迅
【申請(qǐng)人】網(wǎng)宿科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1