本申請涉及通信技術(shù)領(lǐng)域,尤其涉及一種遠(yuǎn)程過程調(diào)用方法、裝置及系統(tǒng)。
背景技術(shù):
在網(wǎng)絡(luò)技術(shù)發(fā)展迅速的今天,服務(wù)器上可以開發(fā)許多技術(shù)應(yīng)用,以便客戶端遠(yuǎn)程調(diào)用服務(wù)器的應(yīng)用,從而實現(xiàn)客戶端的目的。遠(yuǎn)程過程調(diào)用RPC(Remote Procedure Call)一般分為RPC異步調(diào)用和RPC同步調(diào)用。
針對RPC同步調(diào)用,因為RPC同步調(diào)用對申請結(jié)果的即時性要求較高,所以在客戶端向服務(wù)器發(fā)送RPC申請調(diào)用請求之后,服務(wù)器會立即獲取相關(guān)資源并利用相關(guān)資源生成申請結(jié)果;然后將申請結(jié)果添加至與RPC申請調(diào)用請求對應(yīng)的RPC申請調(diào)用應(yīng)答中,以便向客戶端發(fā)送申請結(jié)果。在RPC同步調(diào)用過程中,客戶端僅需在RPC申請調(diào)用應(yīng)答中獲得申請結(jié)果即可,執(zhí)行過程較為簡單。
針對RPC異步調(diào)用,因為RPC異步調(diào)用對申請結(jié)果的即時性要求不高,所以在客戶端向服務(wù)器發(fā)送RPC申請調(diào)用請求之后,服務(wù)器不需要立即獲取相關(guān)資源,而是在滿足其它即時性申請請求之后再獲取相關(guān)資源。由于服務(wù)器獲取相關(guān)資源的時間不可控,這導(dǎo)致服務(wù)器生成申請結(jié)果的時間也不可控。
在服務(wù)器生成申請結(jié)果的時間不可控的情況下,為了達(dá)到客戶端獲得申請結(jié)果的目的,傳統(tǒng)的RPC異步調(diào)用過程為:在客戶端發(fā)送RPC申請調(diào)用請求之后,服務(wù)器向客戶端反饋一個回調(diào)函數(shù)。在服務(wù)器利用相關(guān)資源生成申請結(jié)果之后,主動調(diào)用客戶端的回調(diào)函數(shù),以此通知客戶端獲取申請結(jié)果。
由于服務(wù)器在生成申請結(jié)果之后不會存儲申請結(jié)果,而是會立即調(diào)用回調(diào)函數(shù)來通知客戶端獲取申請結(jié)果,并且客戶端不確定服務(wù)器何時調(diào)用回調(diào)函數(shù),所以為了保證客戶端可以獲取申請結(jié)果,需要在客戶端上建立一個獨立線程。該獨立線程用于不停地監(jiān)聽服務(wù)器是否調(diào)用回調(diào)函數(shù),以便在服務(wù)器生成申請結(jié)果之后立即獲取申請結(jié)果。但是,單獨創(chuàng)建獨立線程來實現(xiàn)異 步調(diào)用的過程非常復(fù)雜且占用較多的CPU資源,不利于客戶端來實現(xiàn)遠(yuǎn)程過程調(diào)用。
因此,現(xiàn)在需要一種遠(yuǎn)程過程調(diào)用方法,以便可以簡化客戶端在RPC異步調(diào)用情況下的執(zhí)行過程。
技術(shù)實現(xiàn)要素:
本申請?zhí)峁┝艘环N遠(yuǎn)程過程調(diào)用方法、裝置及系統(tǒng),本申請可以簡化客戶端在RPC異步調(diào)用情況下的執(zhí)行過程。
為了實現(xiàn)上述目的,本申請?zhí)峁┝艘韵录夹g(shù)手段:
一種遠(yuǎn)程過程調(diào)用方法,包括:
在向服務(wù)器發(fā)送RPC申請調(diào)用請求之后,接收所述服務(wù)器發(fā)送的RPC申請調(diào)用應(yīng)答;其中,所述RPC申請調(diào)用應(yīng)答包括唯一表示所述RPC申請調(diào)用請求的標(biāo)識信息;
在滿足預(yù)設(shè)條件下,向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求;
接收所述服務(wù)器發(fā)送的包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息由服務(wù)器在與所述標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域中獲取,并且,所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài)。
優(yōu)選的,在所述接收所述服務(wù)器發(fā)送的包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答之后,還包括:
確定所述申請結(jié)果狀態(tài),所述申請結(jié)果狀態(tài)包括:等待狀態(tài)、完成狀態(tài)或停止?fàn)顟B(tài);
其中,所述等待狀態(tài)表示所述服務(wù)器未生成申請結(jié)果的狀態(tài);所述完成狀態(tài)表示所述服務(wù)器已生成申請結(jié)果的狀態(tài);所述終止?fàn)顟B(tài)表示所述服務(wù)器在第一時間大于預(yù)設(shè)超時時間之后,仍未生成申請結(jié)果的狀態(tài),所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間。
優(yōu)選的,在確定所述申請結(jié)果狀態(tài)為等待狀態(tài)的情況下,所述方法還包括:
持續(xù)執(zhí)行向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求的步驟,直到不滿足所述預(yù)設(shè)條件或者所述申請結(jié)果狀態(tài)不為所述等待狀態(tài)。
優(yōu)選的,所述申請結(jié)果信息還包括申請結(jié)果;在確定所述申請結(jié)果狀態(tài)為完成狀態(tài)的情況下,所述方法還包括:
保存所述申請結(jié)果信息中的所述申請結(jié)果。
優(yōu)選的,在確定所述RPC獲取結(jié)果應(yīng)答中的申請結(jié)果狀態(tài)為終止?fàn)顟B(tài)的情況下,所述方法還包括:
停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程;
釋放與所述標(biāo)識信息對應(yīng)的CPU資源。
優(yōu)選的,所述滿足預(yù)設(shè)條件的確定過程包括:
判斷第二時間是否大于預(yù)設(shè)超時時間;其中,所述第二時間為客戶端處理所述RPC申請調(diào)用請求的已用時間;
若所述第二時間大于所述預(yù)設(shè)超時時間,則判定不滿足預(yù)設(shè)條件;
若所述第二時間不大于所述預(yù)設(shè)超時時間,則判定滿足預(yù)設(shè)條件。
優(yōu)選的,還包括:
向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC申請停止請求。
一種遠(yuǎn)程過程調(diào)用方法,包括:
在接收客戶端發(fā)送的RPC申請調(diào)用請求之后,向所述客戶端發(fā)送包含標(biāo)識信息的RPC申請調(diào)用應(yīng)答;其中,所述標(biāo)識信息用于唯一標(biāo)識所述RPC申請調(diào)用請求;
構(gòu)建所述標(biāo)識信息與申請結(jié)果區(qū)域的映射關(guān)系;
在接收所述客戶端發(fā)送的包含所述標(biāo)識信息的RPC獲取結(jié)果請求并滿足預(yù)設(shè)條件之后,向所述客戶端發(fā)送包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息為與所述標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域所包含的信息,并且所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài)。
優(yōu)選的,所述申請結(jié)果狀態(tài)包括:等待狀態(tài)、完成狀態(tài)或停止?fàn)顟B(tài);
其中,所述等待狀態(tài)表示所述服務(wù)器未生成申請結(jié)果的狀態(tài);所述完成狀態(tài)表示所述服務(wù)器已生成申請結(jié)果的狀態(tài);所述終止?fàn)顟B(tài)表示所述服務(wù)器在第一時間大于預(yù)設(shè)超時時間之后,仍未生成申請結(jié)果的狀態(tài),所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間。
優(yōu)選的,還包括:
持續(xù)接收所述客戶端發(fā)送的包含所述標(biāo)識信息的RPC獲取結(jié)果請求,并向所述客戶端發(fā)送包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答的步驟,直到不滿足預(yù)設(shè)條件。
優(yōu)選的,所述滿足預(yù)設(shè)條件的確定過程包括:
判斷第一時間是否大于預(yù)設(shè)超時時間;其中,所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間;
若所述第一時間大于預(yù)設(shè)超時時間,則判定不滿足預(yù)設(shè)條件;
若所述第一時間不大于預(yù)設(shè)超時時間,則判定滿足預(yù)設(shè)條件。
優(yōu)選的,在第一時間大于預(yù)設(shè)超期時間或接收所述客戶端發(fā)送包含所述標(biāo)識信息的RPC申請停止請求之后,所述方法還包括:
停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程;
釋放與所述標(biāo)識信息對應(yīng)的RPC資源申請請求對應(yīng)的資源信息。
優(yōu)選的,所述標(biāo)識信息的構(gòu)建過程包括:
在接收所述RPC申請調(diào)用請求之后,確定處理所述RPC申請調(diào)用請求的當(dāng)前線程標(biāo)識以及當(dāng)前時間;
利用所述當(dāng)前線程標(biāo)識和所述當(dāng)前時間,構(gòu)建所述標(biāo)識信息。
一種遠(yuǎn)程過程調(diào)用裝置,包括:
第一接收單元,用于在向服務(wù)器發(fā)送RPC申請調(diào)用請求之后,接收所述服務(wù)器發(fā)送的RPC申請調(diào)用應(yīng)答;其中,所述RPC申請調(diào)用應(yīng)答包括唯一表示所述RPC申請調(diào)用請求的標(biāo)識信息;
第一發(fā)送單元,用于在滿足預(yù)設(shè)條件下,向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求;
第二接收單元,用于接收所述服務(wù)器發(fā)送的包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息由服務(wù)器在與所述標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域中獲取,并且,所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài)。
優(yōu)選的,還包括:
確定單元,用于確定所述申請結(jié)果狀態(tài),所述申請結(jié)果狀態(tài)包括:等待狀態(tài)、完成狀態(tài)或停止?fàn)顟B(tài);
其中,所述等待狀態(tài)表示所述服務(wù)器未生成申請結(jié)果的狀態(tài);所述完成狀態(tài)表示所述服務(wù)器已生成申請結(jié)果的狀態(tài);所述終止?fàn)顟B(tài)表示所述服務(wù)器 在第一時間大于預(yù)設(shè)超時時間之后,仍未生成申請結(jié)果的狀態(tài),所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間。
優(yōu)選的,在確定所述申請結(jié)果狀態(tài)為等待狀態(tài)的情況下,還包括:
所述第一發(fā)送單元還用于,持續(xù)執(zhí)行向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求的步驟,直到不滿足所述預(yù)設(shè)條件或者所述申請結(jié)果狀態(tài)不為所述等待狀態(tài)。
優(yōu)選的,所述申請結(jié)果信息還包括申請結(jié)果;在確定所述申請結(jié)果狀態(tài)為完成狀態(tài)的情況下,還包括:
保存單元,用于保存所述申請結(jié)果信息中的所述申請結(jié)果。
優(yōu)選的,在確定所述RPC獲取結(jié)果應(yīng)答中的申請結(jié)果狀態(tài)為終止?fàn)顟B(tài)的情況下,還包括:
第一停止單元,用于停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程;
第一釋放單元,用于釋放與所述標(biāo)識信息對應(yīng)的CPU資源。
優(yōu)選的,還包括:
第一判斷單元,用于判斷第二時間是否大于預(yù)設(shè)超時時間;其中,所述第二時間為客戶端處理所述RPC申請調(diào)用請求的已用時間;
第一判定單元,用于若所述第二時間大于所述預(yù)設(shè)超時時間,則判定不滿足預(yù)設(shè)條件;
第二判定單元,用于若所述第二時間不大于所述預(yù)設(shè)超時時間,則判定滿足預(yù)設(shè)條件。
優(yōu)選的,還包括:
第二發(fā)送單元,用于向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC申請停止請求。
一種遠(yuǎn)程過程調(diào)用裝置,包括:
第三發(fā)送單元,用于在接收客戶端發(fā)送的RPC申請調(diào)用請求之后,向所述客戶端發(fā)送包含標(biāo)識信息的RPC申請調(diào)用應(yīng)答;其中,所述標(biāo)識信息用于唯一標(biāo)識所述RPC申請調(diào)用請求;
構(gòu)建單元,用于構(gòu)建所述標(biāo)識信息與申請結(jié)果區(qū)域的映射關(guān)系;
第四發(fā)送單元,用于在接收所述客戶端發(fā)送的包含所述標(biāo)識信息的RPC獲取結(jié)果請求并滿足預(yù)設(shè)條件之后,向所述客戶端發(fā)送包含申請結(jié)果信息的 RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息為與所述標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域所包含的信息,并且所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài)。
優(yōu)選的,所述申請結(jié)果狀態(tài)包括:等待狀態(tài)、完成狀態(tài)或停止?fàn)顟B(tài);
其中,所述等待狀態(tài)表示所述服務(wù)器未生成申請結(jié)果的狀態(tài);所述完成狀態(tài)表示所述服務(wù)器已生成申請結(jié)果的狀態(tài);所述終止?fàn)顟B(tài)表示所述服務(wù)器在第一時間大于預(yù)設(shè)超時時間之后,仍未生成申請結(jié)果的狀態(tài),所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間。
優(yōu)選的,所述第四發(fā)送單元,用于持續(xù)接收所述客戶端發(fā)送的包含所述標(biāo)識信息的RPC獲取結(jié)果請求,并向所述客戶端發(fā)送包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答的步驟,直到不滿足預(yù)設(shè)條件。
優(yōu)選的,還包括:
第二判斷單元,用于判斷第一時間是否大于預(yù)設(shè)超時時間;其中,所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間;
第三判定單元,用于若所述第一時間大于預(yù)設(shè)超時時間,則判定不滿足預(yù)設(shè)條件;
第四判定單元,用于若所述第一時間不大于預(yù)設(shè)超時時間,則判定滿足預(yù)設(shè)條件。
優(yōu)選的,在第一時間大于預(yù)設(shè)超期時間或接收所述客戶端發(fā)送包含所述標(biāo)識信息的RPC申請停止請求之后,所述方法還包括:
第二停止單元,用于停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程;
第二釋放單元,用于釋放與所述標(biāo)識信息對應(yīng)的RPC資源申請請求對應(yīng)的資源信息。
優(yōu)選的,所述第三發(fā)送單元包括構(gòu)建單元,用于構(gòu)建所述標(biāo)識信息;
所述構(gòu)建單元,具體包括:
確定單元,用于在接收所述RPC申請調(diào)用請求之后,確定處理所述RPC申請調(diào)用請求的當(dāng)前線程標(biāo)識以及當(dāng)前時間;
構(gòu)建標(biāo)識信息單元,用于利用所述當(dāng)前線程標(biāo)識和所述當(dāng)前時間,構(gòu)建所述標(biāo)識信息。
一種遠(yuǎn)程過程調(diào)用系統(tǒng),包括:
客戶端與所述客戶端相連的服務(wù)器;
所述客戶端,用于在向服務(wù)器發(fā)送RPC申請調(diào)用請求之后,接收所述服務(wù)器發(fā)送的RPC申請調(diào)用應(yīng)答;在滿足預(yù)設(shè)條件下,向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求;接收所述服務(wù)器發(fā)送的包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息由服務(wù)器在與所述標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域中獲取,并且,所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài);
所述服務(wù)器,用于在接收客戶端發(fā)送的RPC申請調(diào)用請求之后,向所述客戶端發(fā)送包含標(biāo)識信息的RPC申請調(diào)用應(yīng)答;其中,所述RPC申請調(diào)用應(yīng)答包括唯一表示所述RPC申請調(diào)用請求的標(biāo)識信息;構(gòu)建所述標(biāo)識信息與申請結(jié)果區(qū)域的映射關(guān)系;在接收所述客戶端發(fā)送的包含所述標(biāo)識信息的RPC獲取結(jié)果請求并滿足預(yù)設(shè)條件之后,向所述客戶端發(fā)送包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息為與所述標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域所包含的信息,并且所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài)。
由以上內(nèi)容,可以看出本申請具有以下有益效果:
本申請中服務(wù)器在生成申請結(jié)果之后可以存儲申請結(jié)果,從而無需通過調(diào)用回調(diào)函數(shù)的方式來告知客戶端獲取申請結(jié)果。因此,本申請客戶端無需創(chuàng)建獨立線程并耗費CPU資源來監(jiān)聽服務(wù)器是否調(diào)用回調(diào)函數(shù),所以可以簡化客戶端的處理過程。由于客戶端占用CPU資源減少,所以客戶端可以將CPU資源執(zhí)行其它處理,從而可以提高客戶端的執(zhí)行效率。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請實施例公開的一種遠(yuǎn)程過程調(diào)用系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為本申請實施例公開的一種遠(yuǎn)程過程調(diào)用方法的流程圖;
圖3為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用方法的流程圖;
圖4為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用方法的流程圖;
圖5為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用方法的流程圖;
圖6為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用方法的流程圖;
圖7為本申請實施例公開的一種遠(yuǎn)程過程調(diào)用裝置的結(jié)構(gòu)示意圖;
圖8為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用裝置的結(jié)構(gòu)示意圖;
圖9為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用裝置的結(jié)構(gòu)示意圖;
圖10為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用裝置的結(jié)構(gòu)示意圖;
圖11為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用裝置的結(jié)構(gòu)示意圖;
圖12為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用裝置的結(jié)構(gòu)示意圖;
圖13為本申請實施例公開的又一種遠(yuǎn)程過程調(diào)用裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護(hù)的范圍。
為了清楚介紹本實施例的應(yīng)用場景,參見圖1,本申請?zhí)峁┝艘环N遠(yuǎn)程過程調(diào)用系統(tǒng),具體包括:客戶端100和服務(wù)器200。
客戶端100可以向服務(wù)器200發(fā)送RPC申請調(diào)用請求,以便調(diào)用服務(wù)器200的技術(shù)應(yīng)用。服務(wù)器200在接收RPC申請調(diào)用請求之后,可以依據(jù)RPC申請調(diào)用請求獲取相關(guān)資源,并利用相關(guān)資源生成申請結(jié)果??蛻舳?00可以在服務(wù)器200生成申請結(jié)果之后,在服務(wù)器200上獲取申請結(jié)果。
基于圖1所示的遠(yuǎn)程過程調(diào)用系統(tǒng),本申請?zhí)峁┝艘环N遠(yuǎn)程過程調(diào)用方法,用于簡化客戶端在RPC異步調(diào)用情況下的執(zhí)行過程。在介紹本申請遠(yuǎn)程過程調(diào)用方法的具體實施例之前,首先介紹本申請的大體執(zhí)行思路:
由背景技術(shù)可知,現(xiàn)有技術(shù)中客戶端在RPC異步調(diào)用情況下的執(zhí)行過程較為復(fù)雜的根本原因為:服務(wù)器在生成與RPC申請調(diào)用請求對應(yīng)的申請結(jié)果之后,無法存儲申請結(jié)果。為此,本申請在服務(wù)器上,建立唯一表示RPC申請調(diào)用請求的標(biāo)識信息,并建立與標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域。服務(wù)器可以在生成申請結(jié)果之后,將申請結(jié)果存儲至申請結(jié)果區(qū)域中。
因此,本申請中服務(wù)器在生成申請結(jié)果之后,不再以調(diào)用回調(diào)函數(shù)的方式來通知客戶端,而是將申請結(jié)果存儲至與標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域中,以等待客戶端來服務(wù)器上獲取申請結(jié)果。這使得無需客戶端在利用單獨線程不斷地來監(jiān)聽服務(wù)器是否調(diào)用回調(diào)函數(shù),所以便不再需要客戶端建立獨立線程,從而可以簡化客戶端的執(zhí)行過程。
下面介紹本申請?zhí)峁┑囊环N遠(yuǎn)程過程調(diào)用方法的具體實施例。如圖2所示,本申請?zhí)峁┑囊环N遠(yuǎn)程過程調(diào)用方法,具體包括以下步驟:
步驟S201:在向服務(wù)器發(fā)送RPC申請調(diào)用請求之后,接收所述服務(wù)器發(fā)送的RPC申請調(diào)用應(yīng)答;其中,所述RPC申請調(diào)用應(yīng)答包括唯一表示所述RPC申請調(diào)用請求的標(biāo)識信息。
客戶端將RPC申請調(diào)用請求發(fā)送至服務(wù)器,RPC申請調(diào)用請求中可以包括句柄、參數(shù)等信息,以便服務(wù)器可以利用RPC申請調(diào)用請求來獲取相關(guān)資源,并利用相關(guān)資源來生成申請結(jié)果。
現(xiàn)有技術(shù)中需要在客戶端上設(shè)置獨立線程,來不斷地監(jiān)聽服務(wù)器是否調(diào)用回調(diào)函數(shù),由于獨立線程占用客戶端的CPU資源并且處理過程較為復(fù)雜。因此,本申請未在客戶端上設(shè)置用于監(jiān)聽服務(wù)器的獨立線程,從而可以簡化客戶端執(zhí)行RPC異步調(diào)用的執(zhí)行過程。
在客戶端未設(shè)置單獨線程來監(jiān)聽服務(wù)器是否調(diào)用回調(diào)函數(shù)的情況下,為了實現(xiàn)客戶端獲取申請結(jié)果的目的,本申請中服務(wù)器可以在接收RPC申請調(diào)用請求之后,為RPC申請調(diào)用請求創(chuàng)建一個唯一的標(biāo)識信息;然后將唯一的標(biāo)識信息添加至RPC申請調(diào)用應(yīng)答中,并將RPC申請調(diào)用應(yīng)答發(fā)送至客戶端,以便客戶端獲取唯一表示RPC申請調(diào)用請求的標(biāo)識信息。
步驟S202:在滿足預(yù)設(shè)條件下,向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求。
關(guān)于判定滿足預(yù)設(shè)條件的過程,將在本實施例之后進(jìn)行詳細(xì)介紹。
由于服務(wù)器生成申請結(jié)果的時間不可控,客戶端不確定服務(wù)器何時生成申請結(jié)果,但可以肯定的是,服務(wù)器在接收RPC申請調(diào)用請求之后,不會立即生成申請結(jié)果。因此,客戶端上可以設(shè)置一個預(yù)設(shè)時間,在獲取服務(wù)器發(fā)送的RPC申請調(diào)用應(yīng)答之后可以等待預(yù)設(shè)時間。在等待預(yù)設(shè)時間之后,再向服務(wù)器發(fā)送RPC獲取結(jié)果請求,以為服務(wù)器預(yù)留預(yù)設(shè)時間來生成申請結(jié)果。
客戶端在等待服務(wù)器生成申請結(jié)果的預(yù)設(shè)時間內(nèi),可以執(zhí)行其它處理過程,以便加快客戶端的處理效率。本步驟中的預(yù)設(shè)時間可以根據(jù)具體情況由技術(shù)人員設(shè)定,在此不做限定。
步驟S203:接收所述服務(wù)器發(fā)送的包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài)。
服務(wù)器在創(chuàng)建標(biāo)識信息之后,可以建立標(biāo)識信息與申請結(jié)果區(qū)域的映射關(guān)系。申請結(jié)果區(qū)域中所包含的信息稱為申請結(jié)果信息,申請結(jié)果信息中至少包括申請結(jié)果狀態(tài),申請結(jié)果狀態(tài)用于表示服務(wù)器處理RPC申請調(diào)用請求的狀態(tài)。在服務(wù)器未生成申請結(jié)果時,申請結(jié)果信息僅包含申請結(jié)果狀態(tài)。在服務(wù)器在生成申請結(jié)果之后,可以將申請結(jié)果存儲至申請結(jié)果區(qū)域中,此時申請結(jié)果信息則包含申請結(jié)果和申請結(jié)果狀態(tài)。
在客戶端向服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求之后,服務(wù)器在RPC獲取結(jié)果請求中獲取標(biāo)識信息。然后,服務(wù)器可以在存儲空間中查找與標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域,并在申請結(jié)果區(qū)域中獲取申請結(jié)果信息。服務(wù)器可以將申請結(jié)果信息添加至RPC獲取結(jié)果應(yīng)答中,并將RPC獲取結(jié)果應(yīng)答發(fā)送至客戶端,以便客戶端得知申請結(jié)果信息。
由以上內(nèi)容,可以看出本申請具有以下有益效果:
本申請中服務(wù)器在生成申請結(jié)果之后可以存儲申請結(jié)果,從而無需通過調(diào)用回調(diào)函數(shù)的方式來告知客戶端獲取申請結(jié)果。因此,本申請客戶端無需創(chuàng)建獨立線程并耗費CPU資源來監(jiān)聽服務(wù)器是否調(diào)用回調(diào)函數(shù),所以可以簡化客戶端的處理過程。由于客戶端占用CPU資源減少,所以客戶端可以將CPU資源執(zhí)行其它處理,從而可以提高客戶端的執(zhí)行效率。
此外,與現(xiàn)有技術(shù)相比本申請中客戶端具有獲取申請結(jié)果的主動權(quán),即客戶端可以主動選擇何時去獲取申請結(jié)果,而不是被動地被服務(wù)器告知去獲取申請結(jié)果。由于服務(wù)器生成申請結(jié)果的時間不可控,所以客戶端不必頻繁地向服務(wù)器獲取申請結(jié)果,而是可以等待預(yù)設(shè)時間,再向服務(wù)器獲取申請結(jié)果。在等待預(yù)設(shè)時間內(nèi),客戶端執(zhí)行其它處理過程,因此可以進(jìn)一步提高客戶端的處理效率。
在步驟S203中涉及到申請結(jié)果信息,下面詳細(xì)介紹申請結(jié)果信息:
由于服務(wù)器生成申請結(jié)果的時間不可控,所以,在客戶端發(fā)送RPC獲取結(jié)果請求的時候,服務(wù)器可能已經(jīng)生成申請結(jié)果、可能未生成申請結(jié)果或者已經(jīng)終止執(zhí)行與標(biāo)識信息對應(yīng)的遠(yuǎn)程過程調(diào)用。
為了使得客戶端了解服務(wù)器處理RPC申請調(diào)用請求的處理狀態(tài),申請結(jié)果信息中至少包括申請結(jié)果狀態(tài)。申請結(jié)果狀態(tài)可以等待狀態(tài)、完成狀態(tài)或終止?fàn)顟B(tài)。
下面分別對三種狀態(tài)進(jìn)行詳細(xì)介紹:
第一種:等待狀態(tài),表示所述服務(wù)器未生成申請結(jié)果的狀態(tài)。
服務(wù)器在構(gòu)建與標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域時,便對申請結(jié)果狀態(tài)進(jìn)行初始化,初始化狀態(tài)為等待狀態(tài)。等待狀態(tài)表示服務(wù)器正在處理RPC申請調(diào)用請求,即服務(wù)器可能正在獲取相關(guān)資源,或者,正在利用相關(guān)資源生成申請結(jié)果。由于還未有申請結(jié)果,所以在此情況下,申請結(jié)果信息僅包括等待狀態(tài)。
第二種:完成狀態(tài),表示所述服務(wù)器已生成申請結(jié)果的狀態(tài)。
若服務(wù)器已經(jīng)利用相關(guān)資源生成申請結(jié)果,則將申請結(jié)果區(qū)域中的申請結(jié)果狀態(tài)更改為完成狀態(tài);并且,服務(wù)器會將生成的申請結(jié)果存儲至申請結(jié)果區(qū)域中。因此在此情況下,申請結(jié)果信息包括申請結(jié)果和完成狀態(tài)。
第三種:終止?fàn)顟B(tài),表示所述服務(wù)器已經(jīng)終止執(zhí)行與標(biāo)識信息對應(yīng)的遠(yuǎn)程過程調(diào)用的狀態(tài)。
在服務(wù)器處理RPC申請調(diào)用請求時可能出現(xiàn)異常情況。例如,獲取資源失敗無法生成申請結(jié)果,或者,客戶端出現(xiàn)異常無法及時獲取申請結(jié)果等情況。在此情況下,如果服務(wù)器一直處理RPC申請調(diào)用請求,則RPC申請調(diào)用請求會一直占用服務(wù)器的CPU資源,則會導(dǎo)致資源浪費。
為此,服務(wù)器上可以具有一個預(yù)設(shè)超時時間,用于表示服務(wù)器處理RPC申請調(diào)用請求的最大時間。如果服務(wù)器處理RPC申請調(diào)用請求的第一時間超過預(yù)設(shè)超時時間,則表示RPC申請調(diào)用請求可能出現(xiàn)異常情況。此時,服務(wù)器停止執(zhí)行RPC申請調(diào)用請求,并將申請結(jié)果區(qū)域中的申請結(jié)果狀態(tài)更改為終止?fàn)顟B(tài)。
服務(wù)器獲取預(yù)設(shè)超時時間過程可以分為兩種情況:
第一種情況:由技術(shù)人員預(yù)先存儲至服務(wù)器中。
技術(shù)人員可以根據(jù)實際情況,確定一個預(yù)設(shè)超時時間。然后將預(yù)設(shè)超時時間設(shè)定至服務(wù)器中。由于服務(wù)器可以響應(yīng)多個客戶端的RPC調(diào)用請求,在第一種情況下,服務(wù)器針對每個客戶端的預(yù)設(shè)超時時間均是一致的。
但是,在一些情況下各個客戶端需要區(qū)別對待,即每個客戶端的預(yù)設(shè)超時時間可能是不相同的。為此,本申請?zhí)峁┝说诙N情況。
第二種情況:接收客戶端在RPC申請調(diào)用請求中攜帶的預(yù)設(shè)超時時間。
由于各個客戶端的預(yù)設(shè)超時時間不確定,服務(wù)器可以存儲各個客戶端的預(yù)設(shè)超時時間,如果在客戶端數(shù)量較大的情況下,存儲各個客戶端的預(yù)設(shè)超時時間的存儲量太大。
在客戶端獲取RPC獲取結(jié)果應(yīng)答之后,可以獲取RPC獲取結(jié)果應(yīng)答中的申請結(jié)果信息,并通過申請結(jié)果信息中的申請結(jié)果狀態(tài),確定服務(wù)器處RPC申請調(diào)用請求的處理狀態(tài)??蛻舳嗽诓煌纳暾埥Y(jié)果狀態(tài)下,會執(zhí)行不同的處理過程。下面詳細(xì)介紹客戶端在確定申請結(jié)果狀態(tài)之后的處理過程。
第一種:等待狀態(tài)。
若客戶端確定申請結(jié)果狀態(tài)為等待狀態(tài),則表示服務(wù)器正在處理RPC申請調(diào)用請求,只是還未生成申請結(jié)果。在此情況下客戶端可以等待一段時間。在等待一段時間之后,再向服務(wù)器發(fā)送包含標(biāo)識信息的RPC獲取結(jié)果請求。
如果再次接收到服務(wù)器反饋RPC獲取結(jié)果應(yīng)答中申請結(jié)果狀態(tài)為等待狀態(tài),繼續(xù)等待一段時間。在等待一段時間之后可以再次執(zhí)行步驟S202向服務(wù)器發(fā)送包含標(biāo)識信息的RPC獲取結(jié)果請求,直到不滿足所述預(yù)設(shè)條件或者所述申請結(jié)果狀態(tài)不為等待狀態(tài)。
即,本申請中客戶端可以在滿足預(yù)設(shè)條件下,多次向服務(wù)器發(fā)送RPC獲取結(jié)果請求,以便獲取申請結(jié)果。
第二種:完成狀態(tài)。
在申請結(jié)果狀態(tài)為完成狀態(tài)下,申請結(jié)果信息中包含有申請結(jié)果。在客戶端確定申請結(jié)果狀態(tài)為完成狀態(tài),便可以保存申請結(jié)果,以便利用申請結(jié)果執(zhí)行其它處理過程。
第三種:終止?fàn)顟B(tài)。
在客戶端確定申請結(jié)果狀態(tài)為終止?fàn)顟B(tài),則表示服務(wù)器已經(jīng)停止執(zhí)行RPC申請調(diào)用請求的遠(yuǎn)程過程調(diào)用。由于無法在服務(wù)器上獲得申請結(jié)果,客戶端也會停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程,并釋放與標(biāo)識信息相關(guān)的CPU資源,以便可以利用CPU資源來執(zhí)行其它處理過程。
上述內(nèi)容詳細(xì)介紹了客戶端在確定申請結(jié)果狀態(tài)之后的執(zhí)行過程。在上述介紹中可以看到在步驟S202中以及在等待狀態(tài)相關(guān)描述中涉及到預(yù)設(shè)條件。下面詳細(xì)介紹預(yù)設(shè)條件的相關(guān)內(nèi)容。
本申請中預(yù)設(shè)條件可以為兩種情況:
第一種情況:空條件。即相當(dāng)于沒有預(yù)設(shè)條件。
在預(yù)設(shè)條件為空條件的情況下,在步驟S202中客戶端可以在任意時刻向服務(wù)器發(fā)送包含標(biāo)識信息的RPC獲取結(jié)果請求,以向服務(wù)器獲取申請結(jié)果。
但是,在一些情況下服務(wù)器可能長時間無法生成申請結(jié)果,如果客戶端上未設(shè)置相關(guān)保護(hù)措施,客戶端可能需要持續(xù)向服務(wù)器發(fā)送RPC獲取結(jié)果請求,這導(dǎo)致該RPC遠(yuǎn)程調(diào)用過程,會一直占用客戶端的CPU資源。
為此,客戶端可以為RPC申請調(diào)用請求設(shè)置一個預(yù)設(shè)超時時間,預(yù)設(shè)超時時間用于表示客戶端處理一個RPC申請調(diào)用請求的最大時間。如果客戶端處理RPC申請調(diào)用請求的第二時間大于預(yù)設(shè)超時時間,則說明此時出現(xiàn)異常情況。為了節(jié)約客戶端的CPU資源,客戶端可以停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程,并釋放與標(biāo)識信息對應(yīng)的CPU資源。
下面介紹步驟S202中滿足預(yù)設(shè)條件的確定過程。如圖3所示,具體包括以下步驟:
步驟S301:判斷第二時間是否大于預(yù)設(shè)超時時間;其中,所述第二時間為客戶端處理所述RPC申請調(diào)用請求的已用時間。若是,則進(jìn)入步驟S302,否則進(jìn)入步驟S303。
在客戶端上可以設(shè)置一個定時器,在客戶端向服務(wù)器發(fā)送RPC申請調(diào)用請求之后,便可以開啟定時器。此時,定時器上的第二時間便可以表示客戶端處理RPC申請調(diào)用請求的已用時間。在客戶端向服務(wù)器發(fā)送RPC獲取結(jié)果請求之前,首先判斷第二時間是否大于預(yù)設(shè)超時時間。
步驟S302:若所述第二時間大于所述預(yù)設(shè)超時時間,則判定不滿足預(yù)設(shè)條件。
若第二時間大于預(yù)設(shè)超時時間,則說明客戶端或服務(wù)器上出現(xiàn)異常情況,此時節(jié)約客戶端和服務(wù)器CPU資源,判定不滿足預(yù)設(shè)條件。在不滿足預(yù)設(shè)條件的情況下,客戶端不再向服務(wù)器發(fā)送RPC獲取結(jié)果請求。為了進(jìn)一步節(jié)約客戶端資源,客戶端可以停止與標(biāo)識信息對應(yīng)的遠(yuǎn)程過程調(diào)用,并釋放相關(guān)CPU資源。
步驟S303:若所述第二時間不大于所述預(yù)設(shè)超時時間,則判定滿足預(yù)設(shè)條件。
在第二時間不大于預(yù)設(shè)超時時間的情況下,則默認(rèn)客戶端和服務(wù)器處于正常狀態(tài),此時判定滿足預(yù)設(shè)條件。在滿足預(yù)設(shè)條件下,客戶端仍可以向服務(wù)器發(fā)送RPC獲取結(jié)果請求,以向服務(wù)器獲取申請結(jié)果。
在現(xiàn)有技術(shù)中一旦客戶端向服務(wù)器發(fā)起RPC申請調(diào)用請求,則表示遠(yuǎn)程過程調(diào)用開始。遠(yuǎn)程過程調(diào)用只有處理時間超過預(yù)設(shè)超時時間或者客戶端獲取申請結(jié)果之后才會結(jié)束。但是,在一些情況下,客戶端可能在服務(wù)器還未生成申請結(jié)果的情況下,便不再需要獲取申請結(jié)果。在此情況下,如果客戶端和服務(wù)器仍然處理RPC申請調(diào)用請求,則會浪費客戶端資源和服務(wù)器資源。
為此,本申請客戶端具有停止遠(yuǎn)程過程調(diào)用的決定權(quán)。即客戶端可以確定自身不需要申請結(jié)果之后,可以向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC申請停止請求;服務(wù)器在接收RPC申請停止請求之后,便停止與標(biāo)識信息對應(yīng)的遠(yuǎn)程過程調(diào)用,并釋放與標(biāo)識信息對應(yīng)的CPU資源。并且,客戶端也可以停止與RPC申請調(diào)用請求相關(guān)的遠(yuǎn)程過程調(diào)用并釋放CPU資源。
以上內(nèi)容詳細(xì)介紹了客戶端的具體執(zhí)行過程,下面介紹服務(wù)器的執(zhí)行步驟。參見圖4,本申請?zhí)峁┝艘环N遠(yuǎn)程過程調(diào)用方法,具體包括以下步驟:
步驟S401:在接收客戶端發(fā)送的RPC申請調(diào)用請求之后,向所述客戶端發(fā)送包含標(biāo)識信息的RPC申請調(diào)用應(yīng)答;其中,所述標(biāo)識信息用于唯一標(biāo)識所述RPC申請調(diào)用請求。
服務(wù)器在接收客戶端的RPC申請調(diào)用請求之后,為RPC申請調(diào)用請求創(chuàng)建一個唯一標(biāo)識。可以理解的是,標(biāo)識信息只要能夠唯一RPC申請調(diào)用請求即可,其創(chuàng)建過程可以根據(jù)具體情況而定。
下面提供一種服務(wù)器創(chuàng)建標(biāo)識信息的具體過程,參見圖5,具體包括:
步驟S501:在接收所述RPC申請調(diào)用請求之后,確定處理所述RPC申請調(diào)用請求的當(dāng)前線程標(biāo)識以及當(dāng)前時間。
服務(wù)器上可以具有多個線程,在接收RPC申請調(diào)用請求之后,服務(wù)器可以選擇一個線程作為處理RPC申請調(diào)用請求的當(dāng)前線程。由于一個線程在同一時間僅能處理一個RPC申請調(diào)用請求,因此利用這個唯一性來構(gòu)建標(biāo)識信息。
步驟S502:利用所述當(dāng)前線程標(biāo)識和所述當(dāng)前時間,構(gòu)建所述標(biāo)識信息。
將包含當(dāng)前線程標(biāo)識和當(dāng)前時間的信息,作為標(biāo)識信息。由于同一線程在一個時間只能處理一個RPC申請調(diào)用請求,所以可以使得標(biāo)識信息具有唯一性。
舉一個構(gòu)建標(biāo)識信息的具體實例,獲取當(dāng)前線程標(biāo)識(可以為當(dāng)前線程號碼),并將當(dāng)前線程標(biāo)識轉(zhuǎn)化為一定長度的字符串,如果轉(zhuǎn)化后的字符串的長度不夠,可以通過在字符串前面補0的方式來使得字符串達(dá)到一定長度。然后,獲取當(dāng)前時間,并將當(dāng)前時間轉(zhuǎn)化為一定長度的字符串,如果長度不夠的在前面加0。將當(dāng)前線程標(biāo)識對應(yīng)的字符串和當(dāng)前時間對應(yīng)的字符串連接起來,作為標(biāo)識信息。
接著返回圖4,進(jìn)入步驟S402:構(gòu)建所述標(biāo)識信息與申請結(jié)果區(qū)域的映射關(guān)系。
由于服務(wù)器可能需要處理多個客戶端發(fā)送的RPC申請調(diào)用請求,為了分別保存每個RPC申請調(diào)用請求的申請結(jié)果信息,服務(wù)器為每個標(biāo)識信息分配一個申請結(jié)果區(qū)域,并建立標(biāo)識信息與申請結(jié)果區(qū)域的映射關(guān)系。
步驟S403:在接收所述客戶端發(fā)送的包含所述標(biāo)識信息的RPC獲取結(jié)果請求并滿足預(yù)設(shè)條件之后,向所述客戶端發(fā)送包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息為與所述標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域所包含的信息,并且所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài)。
服務(wù)器在創(chuàng)建標(biāo)識信息之后,可以建立標(biāo)識信息與申請結(jié)果區(qū)域的映射關(guān)系。申請結(jié)果區(qū)域中所包含的信息稱為申請結(jié)果信息,申請結(jié)果信息中至少包括申請結(jié)果狀態(tài),申請結(jié)果狀態(tài)用于表示服務(wù)器處理RPC申請調(diào)用請求的狀態(tài)。在服務(wù)器未生成申請結(jié)果時,申請結(jié)果信息僅包含申請結(jié)果狀態(tài)。在服務(wù)器在生成申請結(jié)果之后,可以將申請結(jié)果存儲至申請結(jié)果區(qū)域中,此時申請結(jié)果信息則包含申請結(jié)果和申請結(jié)果狀態(tài)。
在客戶端向服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求之后,服務(wù)器在RPC獲取結(jié)果請求中獲取標(biāo)識信息。然后,服務(wù)器可以在存儲空間中查找與標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域,并在申請結(jié)果區(qū)域中獲取申請結(jié)果信息。服務(wù)器可以將申請結(jié)果信息添加至RPC獲取結(jié)果應(yīng)答中,并將RPC獲取結(jié)果應(yīng)答發(fā)送至客戶端,以便客戶端得知申請結(jié)果信息。
由以上內(nèi)容,可以看出本申請具有以下有益效果:
本申請中服務(wù)器在生成申請結(jié)果之后可以存儲申請結(jié)果,從而無需通過調(diào)用回調(diào)函數(shù)的方式來告知客戶端獲取申請結(jié)果。因此,本申請客戶端無需創(chuàng)建獨立線程并耗費CPU資源來監(jiān)聽服務(wù)器是否調(diào)用回調(diào)函數(shù),所以可以簡化客戶端的處理過程。由于客戶端占用CPU資源減少,所以客戶端可以將CPU資源執(zhí)行其它處理,從而可以提高客戶端的執(zhí)行效率。
此外,服務(wù)器不必向客戶端調(diào)用回調(diào)函數(shù),因此也可以簡化服務(wù)器的執(zhí)行過程。
服務(wù)器中的請結(jié)果狀態(tài)包括:等待狀態(tài)、完成狀態(tài)或停止?fàn)顟B(tài);其中,所述等待狀態(tài)表示所述服務(wù)器未生成申請結(jié)果的狀態(tài);所述完成狀態(tài)表示所述服務(wù)器已生成申請結(jié)果的狀態(tài);所述終止?fàn)顟B(tài)表示所述服務(wù)器在第一時間大于預(yù)設(shè)超時時間之后,仍未生成申請結(jié)果的狀態(tài),所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間。
關(guān)于申請結(jié)果狀態(tài)的詳細(xì)描述已經(jīng)在圖2所示的實施例中進(jìn)行詳細(xì)介紹,在此不再贅述。
如果服務(wù)器還未生申請結(jié)果,則申請結(jié)果狀態(tài)為等待狀態(tài)。在服務(wù)器向客戶端反饋的申請結(jié)果狀態(tài)為等待狀態(tài)的情況下,服務(wù)器可以持續(xù)接收所述客戶端發(fā)送的包含所述標(biāo)識信息的RPC獲取結(jié)果請求,并向所述客戶端發(fā)送包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答的步驟,直到不滿足預(yù)設(shè)條件。
如果服務(wù)器已經(jīng)生成申請結(jié)果,則申請結(jié)果狀態(tài)為完成狀態(tài)。在服務(wù)器向客戶端反饋的申請結(jié)果狀態(tài)為完成狀態(tài)的情況下,客戶端可以在服務(wù)器上獲取申請結(jié)果。在客戶端獲取申請結(jié)果之后,服務(wù)器可以釋放與標(biāo)識信息對應(yīng)的CPU資源。
如果服務(wù)器終止執(zhí)行RPC申請調(diào)用請求,則申請結(jié)果狀態(tài)為終止?fàn)顟B(tài)。在服務(wù)器向客戶端反饋的申請結(jié)果狀態(tài)為終止?fàn)顟B(tài)的情況下,客戶端和服務(wù)器均可以停止與標(biāo)識信息的遠(yuǎn)程過程調(diào)用,并釋放相關(guān)CPU資源。
在步驟S403和等待狀態(tài)的相關(guān)描述中涉及到預(yù)設(shè)條件。下面介紹預(yù)設(shè)條件的兩種情況:
第一種情況:空條件。即相當(dāng)于沒有預(yù)設(shè)條件。
在預(yù)設(shè)條件為空條件的情況下,在步驟S403中服務(wù)器可以在任意時刻接收包含標(biāo)識信息的RPC獲取結(jié)果請求,并向客戶端發(fā)送RPC申請結(jié)果應(yīng)答。但是,在一些情況下服務(wù)器可能長時間無法生成申請結(jié)果,如果服務(wù)器上未設(shè)置相關(guān)保護(hù)措施,服務(wù)器可能處理客戶端的RPC獲取結(jié)果請求,這導(dǎo)致該RPC遠(yuǎn)程調(diào)用過程,會一直占用服務(wù)器的CPU資源。
為此,服務(wù)器可以為RPC申請調(diào)用請求設(shè)置一個預(yù)設(shè)超時時間,預(yù)設(shè)超時時間用于表示服務(wù)器處理一個RPC申請調(diào)用請求的最大時間。如果服務(wù)器處理RPC申請調(diào)用請求的第一時間大于預(yù)設(shè)超時時間,則說明此時出現(xiàn)異常情況。為了節(jié)約服務(wù)器的CPU資源,服務(wù)器可以停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程,并釋放與標(biāo)識信息對應(yīng)的CPU資源。
下面介紹步驟S403中滿足預(yù)設(shè)條件的確定過程。如圖6所示,具體包括以下步驟:
步驟S601:判斷第一時間是否大于預(yù)設(shè)超時時間;其中,所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間。
在服務(wù)器上可以設(shè)置一個定時器,在接收RPC申請調(diào)用請求之后,便可以開啟定時器。此時,定時器上的第一時間便可以表示服務(wù)器處理RPC申請調(diào)用請求的已用時間。在處理RPC申請調(diào)用請求過程中持續(xù)判斷第一時間是否大于預(yù)設(shè)超時時間。
步驟S602:若所述第一時間大于預(yù)設(shè)超時時間,則判定不滿足預(yù)設(shè)條件。
若第一時間大于預(yù)設(shè)超時時間,則說明客戶端或服務(wù)器上出現(xiàn)異常情況,此時節(jié)約服務(wù)器CPU資源,判定不滿足預(yù)設(shè)條件。在不滿足預(yù)設(shè)條件的情況下,服務(wù)器可以停止與標(biāo)識信息對應(yīng)的遠(yuǎn)程過程調(diào)用。為了進(jìn)一步節(jié)約服務(wù)器資源,服務(wù)器釋放與標(biāo)識信息相關(guān)CPU資源。
步驟S603:若所述第一時間不大于預(yù)設(shè)超時時間,則判定滿足預(yù)設(shè)條件。
在第一時間不大于預(yù)設(shè)超時時間的情況下,則默認(rèn)客戶端和服務(wù)器處于正常狀態(tài),此時判定滿足預(yù)設(shè)條件。在滿足預(yù)設(shè)條件下,服務(wù)器可以正常處理RPC申請調(diào)用請求,仍可以接收客戶端發(fā)送的RPC獲取結(jié)果請求。
服務(wù)器在第一時間大于預(yù)設(shè)超期時間或接收所述客戶端發(fā)送包含所述標(biāo)識信息的RPC申請停止請求之后,所述方法還包括:停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程;釋放與所述標(biāo)識信息對應(yīng)的RPC資源申請請求對應(yīng)的資源信息。
詳細(xì)內(nèi)容已經(jīng)在上述內(nèi)容中詳細(xì)介紹,在此不再贅述。
與圖2所示的實施例相對應(yīng),本申請還提供一種遠(yuǎn)程過程調(diào)用裝置,如圖7所示,具體包括:
第一接收單元71,用于在向服務(wù)器發(fā)送RPC申請調(diào)用請求之后,接收所述服務(wù)器發(fā)送的RPC申請調(diào)用應(yīng)答;其中,所述RPC申請調(diào)用應(yīng)答包括唯一表示所述RPC申請調(diào)用請求的標(biāo)識信息;
第一發(fā)送單元72,用于在滿足預(yù)設(shè)條件下,向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求;
第二接收單元73,用于接收所述服務(wù)器發(fā)送的包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息由服務(wù)器在與所述標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域中獲取,并且,所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài)。
如圖8所示,本申請?zhí)峁┑倪h(yuǎn)程過程調(diào)用裝置還可以包括:
第二發(fā)送單元74,用于向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC申請停止請求。
確定單元75,用于確定所述申請結(jié)果狀態(tài),所述申請結(jié)果狀態(tài)包括:等待狀態(tài)、完成狀態(tài)或停止?fàn)顟B(tài)。
其中,所述等待狀態(tài)表示所述服務(wù)器未生成申請結(jié)果的狀態(tài);所述完成狀態(tài)表示所述服務(wù)器已生成申請結(jié)果的狀態(tài);所述終止?fàn)顟B(tài)表示所述服務(wù)器在第一時間大于預(yù)設(shè)超時時間之后,仍未生成申請結(jié)果的狀態(tài),所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間。
在確定所述申請結(jié)果狀態(tài)為等待狀態(tài)的情況下,所述第一發(fā)送單元72還用于,持續(xù)執(zhí)行向所述服務(wù)器發(fā)送包含所述標(biāo)識信息的RPC獲取結(jié)果請求的步驟,直到不滿足所述預(yù)設(shè)條件或者所述申請結(jié)果狀態(tài)不為所述等待狀態(tài)。
所述申請結(jié)果信息還包括申請結(jié)果;在確定所述申請結(jié)果狀態(tài)為完成狀態(tài)的情況下,所述裝置還包括:保存單元76,用于保存所述申請結(jié)果信息中的所述申請結(jié)果。
在確定所述RPC獲取結(jié)果應(yīng)答中的申請結(jié)果狀態(tài)為終止?fàn)顟B(tài)的情況下,所述裝置還包括:
第一停止單元77,用于停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程;
第一釋放單元78,用于釋放與所述標(biāo)識信息對應(yīng)的CPU資源。
如圖9所示,所述第一發(fā)送單元中滿足預(yù)設(shè)條件的判斷過程,包括:
第一判斷單元91,用于判斷第二時間是否大于預(yù)設(shè)超時時間;其中,所述第二時間為客戶端處理所述RPC申請調(diào)用請求的已用時間;
第一判定單元92,用于若所述第二時間大于所述預(yù)設(shè)超時時間,則判定不滿足預(yù)設(shè)條件;
第二判定單元93,用于若所述第二時間不大于所述預(yù)設(shè)超時時間,則判定滿足預(yù)設(shè)條件。
與圖4所示的一種遠(yuǎn)程過程調(diào)用方法相對應(yīng),本申請還提供了一種遠(yuǎn)程過程調(diào)用裝置,如圖10所示,具體包括:
第三發(fā)送單元101,用于在接收客戶端發(fā)送的RPC申請調(diào)用請求之后,向所述客戶端發(fā)送包含標(biāo)識信息的RPC申請調(diào)用應(yīng)答;其中,所述標(biāo)識信息用于唯一標(biāo)識所述RPC申請調(diào)用請求;
構(gòu)建單元102,用于構(gòu)建所述標(biāo)識信息與申請結(jié)果區(qū)域的映射關(guān)系;
第四發(fā)送單元103,用于在接收所述客戶端發(fā)送的包含所述標(biāo)識信息的RPC獲取結(jié)果請求并滿足預(yù)設(shè)條件之后,向所述客戶端發(fā)送包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答;其中,所述申請結(jié)果信息為與所述標(biāo)識信息對應(yīng)的申請結(jié)果區(qū)域所包含的信息,并且所述申請結(jié)果信息至少包括申請結(jié)果狀態(tài)。
其中,所述申請結(jié)果狀態(tài)包括:等待狀態(tài)、完成狀態(tài)或停止?fàn)顟B(tài)。
所述等待狀態(tài)表示所述服務(wù)器未生成申請結(jié)果的狀態(tài);所述完成狀態(tài)表示所述服務(wù)器已生成申請結(jié)果的狀態(tài);所述終止?fàn)顟B(tài)表示所述服務(wù)器在第一時間大于預(yù)設(shè)超時時間之后,仍未生成申請結(jié)果的狀態(tài),所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間。
所述第四發(fā)送單元103,用于持續(xù)接收所述客戶端發(fā)送的包含所述標(biāo)識信息的RPC獲取結(jié)果請求,并向所述客戶端發(fā)送包含申請結(jié)果信息的RPC獲取結(jié)果應(yīng)答的步驟,直到不滿足預(yù)設(shè)條件。
如圖11所示,本申請?zhí)峁┑倪h(yuǎn)程過程調(diào)用裝置,還包括:
在第一時間大于預(yù)設(shè)超期時間或接收所述客戶端發(fā)送包含所述標(biāo)識信息的RPC申請停止請求之后,所述方法還包括:
第二停止單元104,用于停止與所述標(biāo)識信息對應(yīng)的RPC調(diào)用過程;
第二釋放單元105,用于釋放與所述標(biāo)識信息對應(yīng)的RPC資源申請請求對應(yīng)的資源信息。
如圖12所示,所述第四發(fā)送單元103中判定滿足預(yù)設(shè)條件的過程,包括:
第二判斷單元121,用于判斷第一時間是否大于預(yù)設(shè)超時時間;其中,所述第一時間為所述服務(wù)器處理所述RPC申請調(diào)用請求的已用時間;
第三判定單元122,用于若所述第一時間大于預(yù)設(shè)超時時間,則判定不滿足預(yù)設(shè)條件;
第四判定單元123,用于若所述第一時間不大于預(yù)設(shè)超時時間,則判定滿足預(yù)設(shè)條件。
如圖13所示,所述第三發(fā)送單元91構(gòu)建所述標(biāo)識信息的過程構(gòu)建單元,具體包括:
確定單元131,用于在接收所述RPC申請調(diào)用請求之后,確定處理所述RPC申請調(diào)用請求的當(dāng)前線程標(biāo)識以及當(dāng)前時間;
構(gòu)建標(biāo)識信息單元132,用于利用所述當(dāng)前線程標(biāo)識和所述當(dāng)前時間,構(gòu)建所述標(biāo)識信息。
參見圖1,本申請?zhí)峁┝艘环N遠(yuǎn)程過程調(diào)用系統(tǒng),包括:
客戶端100與所述客戶端相連的服務(wù)器200。
所述客戶端100和所述服務(wù)器200的執(zhí)行過程遠(yuǎn)程過程調(diào)用方法中已經(jīng)詳細(xì)描述,在此不再贅述。
本實施例方法所述的功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算設(shè)備可讀取存儲介質(zhì)中?;谶@樣的理解,本申請實施例對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算設(shè)備(可以是個人計算機,服務(wù)器,移動計算設(shè)備或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
本說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。