亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種可減少傳輸流量的遠程調(diào)用方法

文檔序號:9633824閱讀:559來源:國知局
一種可減少傳輸流量的遠程調(diào)用方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于網(wǎng)絡(luò)通信領(lǐng)域,尤其是方法調(diào)用過程中減少流量的處理方法,具體地說是一種可減少傳輸流量的遠程調(diào)用方法。
[0002]
【背景技術(shù)】
[0003]目前,Java RMI (遠程方法調(diào)用Remote Method Invocat1n),是一種機制,能夠讓在某個Java虛擬機上的對象調(diào)用另一個Java虛擬機中的對象上的方法??梢杂么朔椒ㄕ{(diào)用的任何對象必須實現(xiàn)該遠程接口。
[0004]Client通過控制鏈連接到Server后,得到RMI對象信息[IP, PORT, Objld],通過數(shù)據(jù)鏈連接此[IP:Port],發(fā)送請求并獲取ObjID對應(yīng)的對象的響應(yīng)。
[0005]所有RMI中的數(shù)據(jù)傳輸,需要進行對象的序列化,傳遞到服務(wù)器端,服務(wù)器端通過反序列化能到原始的對象信息。
[0006]RMI在client端和server端進行數(shù)據(jù)傳輸?shù)臅r候,需要將參數(shù)進行序列化,然后在網(wǎng)絡(luò)傳輸,這塊序列化流的大小,直接影響client和server端的交互速度。

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

[0007]本發(fā)明的目的是針對方法調(diào)用過程中流量占用多的問題,提出一種可減少傳輸流量的遠程調(diào)用方法。
[0008]本發(fā)明的技術(shù)方案是:
一種可減少傳輸流量的遠程調(diào)用方法,客戶端Client通過控制鏈連接到服務(wù)器端Server后,得到RMI對象信息,對RMI對象信息進行省流量的序列化,傳遞到服務(wù)器端,服務(wù)器端通過反序列化能到原始的對象信息,完成遠程調(diào)用。
[0009]本發(fā)明具體包括以下步驟:
(1)、客戶端通過IP和端口向RMI服務(wù)器端發(fā)出服務(wù)請求;
(2)、RMI服務(wù)器端接收到客戶端的請求后,返回服務(wù)器端的IP,數(shù)據(jù)傳輸端口和服務(wù)器端的對象ID ;
(3)、客戶端收到服務(wù)端返回的IP,數(shù)據(jù)傳輸端口和對象ID之后,會在客戶端本地生成一個RMI的本地代理對象即本地存根Stub ;
(4)、RMI客戶端通過本地代理對象往服務(wù)器端的RMI發(fā)起對應(yīng)的請求指令,同時會把對應(yīng)的方法參數(shù),方法名稱傳入本地代理對象;
(5)、本地代理對象Stub通過反射機制,調(diào)用invoke方法,獲取請求對象的方法參數(shù)+方法名稱;
(6)、本地代理對象Stub獲取到相應(yīng)對象的方法參數(shù)之后,首先會獲取和遠程服務(wù)端連接的通道ChannelConnect1n,然后獲取這個連接通道的對象輸出流;
(7)、獲取到對象輸出流之后,本地代理對象調(diào)用JDK的序列化對象方法,將之前獲取到的對象的方法參數(shù)序列化成流寫進第六步獲取到的對象輸出流中;
(8)、客戶端將步驟(7)中對象輸出流的信息發(fā)送到服務(wù)器端,服務(wù)器接收到請求之后,首先通過JDK的反序列化,將流反序列化成對應(yīng)的請求方法參數(shù),然后服務(wù)器端調(diào)用對應(yīng)的請求方法進行業(yè)務(wù)處理;
(9)、服務(wù)器端方法業(yè)務(wù)處理結(jié)束之后,將結(jié)果通過JDK序列化成流,返回給RMI客戶端,客戶端再次通過反序列化,將流讀成對應(yīng)的結(jié)果,然后釋放連接,完成了一次遠程方法調(diào)用步驟。
[0010]本發(fā)明的有益效果:
RMI在client端和server端進行數(shù)據(jù)傳輸?shù)臅r候,需要將參數(shù)進行序列化,然后在網(wǎng)絡(luò)傳輸,這塊序列化流的大小,直接影響client和server端的交互速度,傳統(tǒng)處理序列化流的時候,RMI除了將對象的方法參數(shù)進行序列化,還會將該對象所在項目的工程信息返回,這些信息包括了本地的classpath,本地的jar包路徑等等信息,這些信息都是客戶端本地路徑的信息,這些信息對于我們的業(yè)務(wù)毫無用處,但是序列化完之后,卻占據(jù)了大量的帶寬。本發(fā)明方法通過減小序列化流的大小,不攜帶對象所在項目的工程信息,從而減少網(wǎng)絡(luò)帶寬的使用,使得client和server端的交互速度提升數(shù)倍。另外,任何使用RMI方法的地方,無需在方法層做任何修改,即可達到減少流量的目的。
【附圖說明】
[0011]圖1是本發(fā)明的結(jié)構(gòu)示意圖。
【具體實施方式】
[0012]下面結(jié)合附圖和實施例對本發(fā)明作進一步的說明。
[0013]如圖1所示,一種可減少傳輸流量的遠程調(diào)用方法,客戶端Client通過控制鏈連接到服務(wù)器端Server后,得到RMI對象信息,對RMI對象信息進行省流量的序列化,傳遞到服務(wù)器端,服務(wù)器端通過反序列化能到原始的對象信息,完成遠程調(diào)用。本發(fā)明具體包括以下步驟:
(1)、客戶端通過IP和端口向RMI服務(wù)器端發(fā)出服務(wù)請求;
(2)、RMI服務(wù)器端接收到客戶端的請求后,返回服務(wù)器端的IP,數(shù)據(jù)傳輸端口和服務(wù)器端的對象ID ;
(3)、客戶端收到服務(wù)端返回的IP,數(shù)據(jù)傳輸端口和對象ID之后,會在客戶端本地生成一個RMI的本地代理對象即本地存根Stub ;
(4)、RMI客戶端通過本地代理對象往服務(wù)器端的RMI發(fā)起對應(yīng)的請求指令,同時會把對應(yīng)的方法參數(shù),方法名稱傳入本地代理對象;
(5)、本地代理對象Stub通過反射機制,調(diào)用invoke方法,獲取請求對象的方法參數(shù)+方法名稱;
(6)、本地代理對象Stub獲取到相應(yīng)對象的方法參數(shù)之后,首先會獲取和遠程服務(wù)端連接的通道ChannelConnect1n,然后獲取這個連接通道的對象輸出流;
(7)、獲取到對象輸出流之后,本地代理對象調(diào)用JDK的序列化對象方法,將之前獲取到的對象的方法參數(shù)序列化成流寫進第六步獲取到的對象輸出流中; (8)、客戶端將步驟(7)中對象輸出流的信息發(fā)送到服務(wù)器端,服務(wù)器接收到請求之后,首先通過JDK的反序列化,將流反序列化成對應(yīng)的請求方法參數(shù),然后服務(wù)器端調(diào)用對應(yīng)的請求方法進行業(yè)務(wù)處理;
(9)、服務(wù)器端方法業(yè)務(wù)處理結(jié)束之后,將結(jié)果通過JDK序列化成流,返回給RMI客戶端,客戶端再次通過反序列化,將流讀成對應(yīng)的結(jié)果,然后釋放連接,完成了一次遠程方法調(diào)用步驟。
[0014]具體實施時:
在圖1所示的RMI通信過程中,修改第3步序列化請求參數(shù),原先的參數(shù)包含方法參數(shù)和對象所在項目的工程信息兩個部分。通過網(wǎng)絡(luò)抓包抓取的client和server數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)包分析發(fā)現(xiàn),開始幾行是正常的對象序列化信息,還有主機ip。后面大部分都是客戶端本地項目的一些jar包、本地的classpath的信息,這些信息占據(jù)的整個數(shù)據(jù)流的80%左右,由于是client本地路徑信息,對于server端來說,毫無用處,如果能夠去除這些,那么帶寬使用情況將大幅度的縮小。
[0015]因此,去除掉占80%大小的classPath序列化流,整個序列化參數(shù)流大小將縮小4-5 倍。
[0016]本發(fā)明未涉及部分均與現(xiàn)有技術(shù)相同或可采用現(xiàn)有技術(shù)加以實現(xiàn)。
【主權(quán)項】
1.一種可減少傳輸流量的遠程調(diào)用方法,其特征是客戶端Client通過控制鏈連接到服務(wù)器端Server后,得到RMI對象信息,對RMI對象信息進行省流量的序列化,傳遞到服務(wù)器端,服務(wù)器端通過反序列化能到原始的對象信息,完成遠程調(diào)用。2.根據(jù)權(quán)利要求1所述的可減少傳輸流量的遠程調(diào)用方法,其特征是它具體包括以下步驟: (1)、客戶端通過IP和端口向RMI服務(wù)器端發(fā)出服務(wù)請求; (2)、RMI服務(wù)器端接收到客戶端的請求后,返回服務(wù)器端的IP,數(shù)據(jù)傳輸端口和服務(wù)器端的對象ID ; (3)、客戶端收到服務(wù)端返回的IP,數(shù)據(jù)傳輸端口和對象ID之后,會在客戶端本地生成一個RMI的本地代理對象即本地存根Stub ; (4)、RMI客戶端通過本地代理對象往服務(wù)器端的RMI發(fā)起對應(yīng)的請求指令,同時會把對應(yīng)的方法參數(shù),方法名稱傳入本地代理對象; (5)、本地代理對象Stub通過反射機制,調(diào)用invoke方法,獲取請求對象的方法參數(shù)+方法名稱; (6)、本地代理對象Stub獲取到相應(yīng)對象的方法參數(shù)之后,首先會獲取和遠程服務(wù)端連接的通道ChannelConnect1n,然后獲取這個連接通道的對象輸出流; (7)、獲取到對象輸出流之后,本地代理對象調(diào)用JDK的序列化對象方法,將之前獲取到的對象的方法參數(shù)序列化成流寫進第六步獲取到的對象輸出流中; (8)、客戶端將步驟(7)中對象輸出流的信息發(fā)送到服務(wù)器端,服務(wù)器接收到請求之后,首先通過JDK的反序列化,將流反序列化成對應(yīng)的請求方法參數(shù),然后服務(wù)器端調(diào)用對應(yīng)的請求方法進行業(yè)務(wù)處理; (9)、服務(wù)器端方法業(yè)務(wù)處理結(jié)束之后,將結(jié)果通過JDK序列化成流,返回給RMI客戶端,客戶端再次通過反序列化,將流讀成對應(yīng)的結(jié)果,然后釋放連接,完成了 一次遠程方法調(diào)用步驟。
【專利摘要】一種可減少傳輸流量的遠程調(diào)用方法,客戶端Client通過控制鏈連接到服務(wù)器端Server后,得到RMI對象信息,對RMI對象信息進行省流量的序列化,傳遞到服務(wù)器端,服務(wù)器端通過反序列化能到原始的對象信息,完成遠程調(diào)用。本發(fā)明的方法通過減小序列化流的大小,不攜帶對象所在項目的工程信息,從而減少網(wǎng)絡(luò)帶寬的使用,使得client和server端的交互速度提升數(shù)倍。另外,任何使用RMI方法的地方,無需在方法層做任何修改,即可達到減少流量的目的。
【IPC分類】H04L29/08, G06F9/54
【公開號】CN105391804
【申請?zhí)枴緾N201510942214
【發(fā)明人】張佳斌, 裔韓誠, 趙家智, 付志鵬, 陳杰, 唐勇
【申請人】炫彩互動網(wǎng)絡(luò)科技有限公司
【公開日】2016年3月9日
【申請日】2015年12月16日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1