RPC

一、RPC的含義服務器

  RPC(Remote Procedure Call)—遠程過程調用,它是一種經過網絡從遠程計算機程序上請求服務,而不須要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,爲通訊程序之間攜帶信息數據。在OSI網絡通訊模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分佈式多程序在內的應用程序更加容易。網絡

  RPC採用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,而後等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達爲止。當一個調用信息到達,服務器得到進程參數,計算結果,發送答覆信息,而後等待下一個調用信息,最後,客戶端調用進程接收答覆信息,得到進程結果,而後調用執行繼續進行。框架

  有多種 RPC模式和執行。最初由 Sun 公司提出。IETF ONC 憲章從新修訂了 Sun 版本,使得 ONC RPC 協議成爲 IETF 標準協議。如今使用最廣泛的模式和執行是開放式軟件基礎的分佈式計算環境(DCE)。分佈式

二、爲何要用RPC編碼

  當咱們的系統訪問量增大、業務增多時,咱們會發現一臺單機運行此係統已經沒法承受。此時,咱們能夠將業務拆分紅幾個互不關聯的應用,分別部署在各自機器上,以劃清邏輯並減少壓力。此時,咱們也能夠不須要RPC,由於應用之間是互不關聯的。當咱們的業務愈來愈多、應用也愈來愈多時,天然的,咱們會發現有些功能已經不能簡單劃分開來或者劃分不出來。此時,能夠將公共業務邏輯抽離出來,將之組成獨立的服務Service應用 。而原有的、新增的應用均可以與那些獨立的Service應用 交互,以此來完成完整的業務功能。因此此時,咱們急需一種高效的應用程序之間的通信手段來完成這種需求,因此你看,RPC大顯身手的時候來了!spa

三、RPC的原理和框架.net

  RPC 的程序包括 5 個部分:1. User 2. User-stub 3. RPCRuntime 4. Server-stub 5. Server 下面是這5個部分的關係圖:3d

  這裏 user 就是 client 端,當 user 想發起一個遠程調用時,它實際是經過本地調用user-stub。user-stub 負責將調用的接口、方法和參數經過約定的協議規範進行編碼並經過本地的 RPCRuntime 實例傳輸到遠端的實例。遠端 RPCRuntime 實例收到請求後交給 server-stub 進行解碼後發起本地端調用,調用結果再返回給 user 端。代理

  RPC 服務方經過 RpcServer 去導出(export)遠程接口方法,而客戶方經過 RpcClient 去引入(import)遠程接口方法。客戶方像調用本地方法同樣去調用遠程接口方法,RPC 框架提供接口的代理實現,實際的調用將委託給代理RpcProxy 。代理封裝調用信息並將調用轉交給RpcInvoker 去實際執行。在客戶端的RpcInvoker 經過鏈接器RpcConnector 去維持與服務端的通道RpcChannel,並使用RpcProtocol 執行協議編碼(encode)並將編碼後的請求消息經過通道發送給服務方。RPC 服務端接收器 RpcAcceptor 接收客戶端的調用請求,一樣使用RpcProtocol 執行協議解碼(decode)。解碼後的調用信息傳遞給RpcProcessor 去控制處理調用過程,最後再委託調用給RpcInvoker 去實際執行並返回調用結果。code

以上知識點參考博客:https://blog.csdn.net/kingcat666/article/details/78577079

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息