RPC基本原理

轉載:https://blog.csdn.net/zkp_java/article/details/81879577 

RPC基本原理

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

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

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


RPC通信過程如下圖所示 
 


通信過程包括以下幾個步驟:

1、客戶過程以正常方式調用客戶樁(client stub,一段代碼);
2、客戶樁生成一個消息,然後調用本地操作系統;
3、客戶端操作系統將消息發送給遠程操作系統;
4、遠程操作系統將消息交給服務器樁(server stub,一段代碼);
5、服務器樁將參數提取出來,然後調用服務器過程;
6、服務器執行要求的操作,操作完成後將結果返回給服務器樁;
7、服務器樁將結果打包成一個消息,然後調用本地操作系統;
8、服務器操作系統將含有結果的消息發送回客戶端操作系統;
9、客戶端操作系統將消息交給客戶樁;
10、客戶樁將結果從從消息中提取出來,返回給調用它的客戶過程;


所有這些步驟的效果是,將客戶過程對客戶樁發出的本地調用轉換成對服務器過程的本地調用,而客戶端和服務器都不會意識到有中間步驟的存在。

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

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


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章