RPC基本原理

2021-09-25 14:39:46 字數 1152 閱讀 2628

rpc(remote procedure call),遠端過程呼叫,大部分的rpc框架都遵循如下三個開發步驟:

1. 定義乙個介面說明檔案:描述了物件(結構體)、物件成員、介面方法等一系列資訊;

2. 通過rpc框架所提供的編譯器,將介面說明檔案編譯成具體的語言檔案;

3. 在客戶端和伺服器端分別引入rpc編譯器所生成的檔案,即可像呼叫本地方法一樣呼叫服務端**;

rpc通訊過程如下圖所示

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 等公有協議,對於內部的服務呼叫,應用選擇效能更高的二進位制私有協議

mysql的基本原理 Mysql 基本原理

mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...

8 2 1 基本原理

乙個舞台動畫物件在包含許多舞台資訊 出現在何處,佔多大面積,處在什麼角度,是否可見 這些資訊分別儲存在動畫物件的屬性中。在 中讀取這些屬性可以了解物件的位置 大小 角度等狀態資訊 修改這些屬性可以改變物件的位置 大小 角度等狀態。如果從資料的角度去理解,動畫就是在固定時間間隔點不斷修改動畫物件某項屬...

Csocket基本原理

我通過幾個採用 csocket 類編寫並基於 client server 客戶端 服務端 的網路聊天和傳輸檔案的程式 在除錯這些程式的過程中,追蹤深入至 csocket 類核心原始碼 sockcore.cpp 對於csocket 類的執行機制可謂是一覽無遺,並且對於阻塞和非阻塞方式下的 socket...