遠程過程調用(Remote Procedure Call,RPC)是一種通過網絡從遠程計算機程序上請求服務。通過RPC,使用者無需了解底層網絡技術,快速開發部署業務功能邏輯[1]。因此,在RPC在分布式系統中的系統環境建設和應用程序設計中有著廣泛的應用[2],如:分布式操作系統的進程間通訊、構造分布式計算的軟件環境、遠程數據庫服務、分布式應用程序設計、分布式程序的調試等。
RPC主流實現的方式[3]有:基于TCP協議、基于HTTP協議。基于TCP協議實現RPC,由于處于協議棧底層,可更靈活地對協議字段進行定制,減少網絡傳輸字節數,提高性能,但受所定義協議的局限,需要關注底層實現細節,難以實現跨平臺調用,不同的終端需要開發不同的工具包來進行請求發送和響應解析,代碼量高,工作量大[4];基于HTTP協議實現RPC,作為通用的格式標準,使用JSON和XML格式開發相對成熟,但與TCP傳輸性能的存在較大差距[5]。
綜上所述,基于上述協議的主流RPC框架,雖然有適用面廣、功能強大的優點,但是也存在著代碼量多、流程復雜、對系統開銷較大的缺點,用于小型應用程序上過于龐大,因此,本文提出一種基于UDP通信的遠程過程調用方法,采用對系統開銷較小的UDP協議,利用負載均衡策略,基于服務進程向注冊進程注冊服務的方式,應用進程從注冊進程獲取服務進程的相關信息,實現應用與服務進程的直接RPC通信,具備構架輕便、系統開銷小的特點,滿足小型應用程序的輕量化要求,具有重要的意義。
RPC系統采用C/S模式,請求程序作為客戶機,服務提供程序作為服務器,由請求程序向服務程序發送調用信息,能夠獲得答復信息并獲得進程結果,交互流程如圖1所示。……