RPC調用


RPC(Remote Procedure Call) 遠程過程調用

是一種通信方式,類似http/s.是一種技術思想,而不是規范。

RPC(Remote Procedure Call),遠程過程調用,大部分的RPC框架都遵循如下三個開發步驟:

1. 定義一個接口說明文件:描述了對象(結構體)、對象成員、接口方法等一系列信息; 2. 通過RPC框架所提供的編譯器,將接口說明文件編譯成具體的語言文件; 3. 在客戶端和服務器端分別引入RPC編譯器所生成的文件,即可像調用本地方法一樣調用服務端代碼

通信和序列化:

 

1、客戶過程以正常方式調用客戶樁(client stub,一段代碼);

2、客戶樁生成一個消息,然后調用本地操作系統;

3、客戶端操作系統將消息發送給遠程操作系統;

4、遠程操作系統將消息交給服務器樁(server stub,一段代碼);

5、服務器樁將參數提取出來,然后調用服務器過程;

6、服務器執行要求的操作,操作完成后將結果返回給服務器樁;

7、服務器樁將結果打包成一個消息,然后調用本地操作系統;

8、服務器操作系統將含有結果的消息發送回客戶端操作系統;

9、客戶端操作系統將消息交給客戶樁;

10、客戶樁將結果從從消息中提取出來,返回給調用它的客戶過程

 

這個時候,你可能會想,既然是調用另一台機器的服務,使用 RESTful API 也可以實現啊,為什么要選擇 RPC 呢?我們可以從兩個方面對比:

  • 資源粒度。RPC 就像本地方法調用,RESTful API 每一次添加接口都可能需要額外地組織開放接口的數據,這相當於在應用視圖中再寫了一次方法調用,而且它還需要維護開發接口的資源粒度、權限等;
  • 流量消耗。RESTful API 在應用層使用 HTTP 協議,哪怕使用輕型、高效、傳輸效率高的 JSON 也會消耗較大的流量,而 RPC 傳輸既可以使用 TCP 也可以使用 UDP,而且協議一般使用二制度編碼,大大降低了數據的大小,減少流量消耗。

對接異構第三方服務時,通常使用 HTPP/RESTful 等公有協議,對於內部的服務調用,應用選擇性能更高的二進制私有協議

 參考文章:

https://www.cnblogs.com/jpfss/p/10881220.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM