国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于UDP通信的遠程過程調(diào)用方法

2020-05-07 03:16:32
廣東通信技術(shù) 2020年4期
關(guān)鍵詞:服務(wù)端調(diào)用進程

1 引言

遠程過程調(diào)用(Remote Procedure Call,RPC)是一種通過網(wǎng)絡(luò)從遠程計算機程序上請求服務(wù)。通過RPC,使用者無需了解底層網(wǎng)絡(luò)技術(shù),快速開發(fā)部署業(yè)務(wù)功能邏輯[1]。因此,在RPC在分布式系統(tǒng)中的系統(tǒng)環(huán)境建設(shè)和應(yīng)用程序設(shè)計中有著廣泛的應(yīng)用[2],如:分布式操作系統(tǒng)的進程間通訊、構(gòu)造分布式計算的軟件環(huán)境、遠程數(shù)據(jù)庫服務(wù)、分布式應(yīng)用程序設(shè)計、分布式程序的調(diào)試等。

RPC主流實現(xiàn)的方式[3]有:基于TCP協(xié)議、基于HTTP協(xié)議?;赥CP協(xié)議實現(xiàn)RPC,由于處于協(xié)議棧底層,可更靈活地對協(xié)議字段進行定制,減少網(wǎng)絡(luò)傳輸字節(jié)數(shù),提高性能,但受所定義協(xié)議的局限,需要關(guān)注底層實現(xiàn)細節(jié),難以實現(xiàn)跨平臺調(diào)用,不同的終端需要開發(fā)不同的工具包來進行請求發(fā)送和響應(yīng)解析,代碼量高,工作量大[4];基于HTTP協(xié)議實現(xiàn)RPC,作為通用的格式標準,使用JSON和XML格式開發(fā)相對成熟,但與TCP傳輸性能的存在較大差距[5]。

綜上所述,基于上述協(xié)議的主流RPC框架,雖然有適用面廣、功能強大的優(yōu)點,但是也存在著代碼量多、流程復(fù)雜、對系統(tǒng)開銷較大的缺點,用于小型應(yīng)用程序上過于龐大,因此,本文提出一種基于UDP通信的遠程過程調(diào)用方法,采用對系統(tǒng)開銷較小的UDP協(xié)議,利用負載均衡策略,基于服務(wù)進程向注冊進程注冊服務(wù)的方式,應(yīng)用進程從注冊進程獲取服務(wù)進程的相關(guān)信息,實現(xiàn)應(yīng)用與服務(wù)進程的直接RPC通信,具備構(gòu)架輕便、系統(tǒng)開銷小的特點,滿足小型應(yīng)用程序的輕量化要求,具有重要的意義。

2 基于UDP通信的遠程調(diào)用方法

RPC系統(tǒng)采用C/S模式,請求程序作為客戶機,服務(wù)提供程序作為服務(wù)器,由請求程序向服務(wù)程序發(fā)送調(diào)用信息,能夠獲得答復(fù)信息并獲得進程結(jié)果,交互流程如圖1所示。

圖1 RPC交互流程

基于UDP通信的遠程調(diào)用方法,包含以下重要部分:①服務(wù)端服務(wù)進程注冊模塊、②客戶端查詢注冊進程模塊、③應(yīng)用進程負載均衡策略、④客戶端發(fā)送RPC服務(wù)請求模塊、⑤服務(wù)端執(zhí)行對應(yīng)的業(yè)務(wù)流程模塊、⑥服務(wù)端發(fā)送響應(yīng)信息模塊、⑦客戶端接收響應(yīng)信息模塊,各部分對應(yīng)的步驟如圖2所示。

圖2 基于UDP通信的遠程調(diào)用方法

系統(tǒng)處理流程如下:①首先,客戶進程中,應(yīng)用層調(diào)用RPC接口的API發(fā)起請求,調(diào)用系統(tǒng)網(wǎng)絡(luò)接口發(fā)送請求,通過網(wǎng)絡(luò)數(shù)據(jù)包從客戶端發(fā)到服務(wù)端;②然后,服務(wù)進程中,RPC請求從服務(wù)端的系統(tǒng)層傳遞到用戶層的RPC接口,通過RPC請求解析后,找到對應(yīng)的服務(wù)層,并將執(zhí)行結(jié)果發(fā)回給RPC接口,調(diào)用系統(tǒng)網(wǎng)絡(luò)接口回復(fù)執(zhí)行結(jié)果;③最后,客戶進程中,執(zhí)行結(jié)果通過網(wǎng)絡(luò)數(shù)據(jù)包從服務(wù)端發(fā)到客戶端,從客戶端的系統(tǒng)層傳遞到用戶層的RPC接口,將執(zhí)行結(jié)果轉(zhuǎn)給對應(yīng)的應(yīng)用層,完成請求任務(wù)。

各部分詳細介紹如下。

2.1 服務(wù)端服務(wù)進程注冊模塊

服務(wù)進程是提供RPC服務(wù)的應(yīng)用程序,需要注冊在服務(wù)器上,其對應(yīng)信息包含:RPC服務(wù)信息(服務(wù)名、服務(wù)說明等)以及相應(yīng)的UDP端口號。服務(wù)信息的結(jié)構(gòu)定義如下:

2.2 客戶端查詢注冊進程模塊

客戶端的應(yīng)用進程是需要使用RPC服務(wù)的應(yīng)用程序,當應(yīng)用進程需要調(diào)用RPC服務(wù)時,可根據(jù)服務(wù)名向注冊進程發(fā)送查詢請求;注冊進程可以依據(jù)查詢請求中攜帶的服務(wù)名,查找當前可以提供相應(yīng)RPC服務(wù)的服務(wù)進程,并向應(yīng)用進程發(fā)送反饋信息,反饋信息中可包含有提供RPC服務(wù)的各個服務(wù)進程的鏈接信息,包括:服務(wù)進程的IP地址、UDP端口號等。反饋信息的結(jié)構(gòu)定義如下:

2.3 負載均衡策略

每個服務(wù)進程可以提供多個不同的RPC服務(wù),因此,針對同一項RPC服務(wù)而言,可以提供該項RPC服務(wù)的服務(wù)進程可能有多個,即應(yīng)用進程接收的反饋信息中可能包含有多個服務(wù)進程的相關(guān)信息。

系統(tǒng)應(yīng)用進程設(shè)計按照可以依據(jù)負載均衡策略,選取出一個合適的服務(wù)進程作為目標服務(wù)進程,利用該目標服務(wù)進程提供相應(yīng)的RPC服務(wù)。

2.4 客戶端發(fā)送RPC服務(wù)請求模塊

應(yīng)用進程依據(jù)該鏈接信息,可向目標服務(wù)進程發(fā)送RPC服務(wù)請求。設(shè)計基于UDP通信的遠程調(diào)用,將RPC服務(wù)請求以UDP數(shù)據(jù)包的形式發(fā)送到目標服務(wù)進程所在IP地址的UDP端口上,RPC服務(wù)請求中可以包含請求號、服務(wù)名、請求參數(shù)等信息。RPC服務(wù)請求的結(jié)構(gòu)定義如下:

為了可以一次發(fā)送多個RPC服務(wù)請求,在RPC服務(wù)請求中增加了參數(shù)reqId,該參數(shù)在每個請求中都是不同了,唯一標識一個RPC服務(wù)請求消息。參數(shù)serviceName是請求的服務(wù)名。參數(shù)textArg和binArg是請求參數(shù),格式是服務(wù)自定義的。為了方便使用,textArg使用擴展性好的JSON格式,保存可以用字符串表達的參數(shù),binArg保存不能用字符串表達的參數(shù),這樣兩種類型的參數(shù)已經(jīng)可以覆蓋業(yè)務(wù)需求,并且良好的擴展性,便于后期維護。

2.5 服務(wù)端執(zhí)行對應(yīng)的業(yè)務(wù)流程

目標服務(wù)進程提供的RPC服務(wù)可能有多個,依據(jù)RPC服務(wù)請求中攜帶的服務(wù)名,可以獲知需要執(zhí)行哪一項RPC服務(wù),從而調(diào)用相應(yīng)的業(yè)務(wù)流程。請求參數(shù)可以看做是該業(yè)務(wù)流程的輸入?yún)?shù),經(jīng)過業(yè)務(wù)流程的處理,可以得到相應(yīng)的執(zhí)行結(jié)果。

2.6 服務(wù)端發(fā)送響應(yīng)信息

業(yè)務(wù)進程可以一次發(fā)送多個RPC服務(wù)請求,為了便于區(qū)分每個RPC服務(wù)請求的執(zhí)行結(jié)果,在響應(yīng)信息中可以攜帶請求號和服務(wù)名,其中,該請求號和RPC服務(wù)請求中的請求號相同,該服務(wù)名是和RPC服務(wù)請求中的服務(wù)名相同。響應(yīng)信息的結(jié)構(gòu)定義如下,

響應(yīng)消息中的參數(shù)reqId、serviceName和RPC服務(wù)請求中的參數(shù)是一致的,textResult保存可以用字符串表達的結(jié)果,binResult保存不能用字符串表達的結(jié)果。

2.7 客戶端接收響應(yīng)信息

如果響應(yīng)信息的數(shù)據(jù)量很大,可以分為多個UDP包發(fā)送,在消息的包頭中可以用消息的分片序號來標識每個數(shù)據(jù)包,在客戶端的RPC接口層中進行重組后提交給上層。

3 結(jié)論

本文所提的基于UDP通信的遠程過程調(diào)用方法,采用了對系統(tǒng)開銷較小的UDP協(xié)議,設(shè)計了簡單快捷的處理流程,快速的配置下發(fā)和狀態(tài)查詢功能既能滿足輕量級應(yīng)用程序的需求,又能減輕系統(tǒng)負擔,在2/3/4/5G通信網(wǎng)業(yè)務(wù)功能設(shè)計、DPI設(shè)備系統(tǒng)、協(xié)議解析設(shè)備系統(tǒng)中有廣泛的應(yīng)用,特別適用于功能簡單、網(wǎng)絡(luò)情況良好的應(yīng)用場景。

猜你喜歡
服務(wù)端調(diào)用進程
核電項目物項調(diào)用管理的應(yīng)用研究
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
云存儲中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
新時期《移動Web服務(wù)端開發(fā)》課程教學改革的研究
在Windows Server 2008上創(chuàng)建應(yīng)用
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
我國高等教育改革進程與反思
Linux僵死進程的產(chǎn)生與避免
肇庆市| 淳化县| 北辰区| 高邮市| 延长县| 琼海市| 平原县| 托克托县| 平远县| 阳曲县| 南靖县| 琼海市| 迁西县| 嘉定区| 封开县| 丁青县| 图木舒克市| 吉安市| 金门县| 张北县| 仁布县| 当阳市| 南城县| 山西省| 托克逊县| 旬阳县| 潮安县| 涿鹿县| 自贡市| 友谊县| 巧家县| 方山县| 江孜县| 余江县| 玛沁县| 凉城县| 宜春市| 湖口县| 宁波市| 沭阳县| 禹州市|