RPC 編程 -一-: 初步瞭解 RPC

  1. 什麼是 RPC

RPC(Remote Procedure Call,遠程過程調用)是一種進程間的通信方式,它是一種技術思想 (概念), 而不是規範,它允許程序調用另一個地址空間(通常是共享網絡的另一臺機器) 的過程函數,而開發者無需額外地爲這個調用過程編寫網絡通信相關代碼細節。

通俗的解釋:客戶端在不知道調用細節的情況下,調用存在於遠程計算機上的某個對象,就像調用本地應用程序中的對象一樣。

  1. 遠程調用和本地調用

  1. HTTP 和 RPC 區別

3.1 從概念區分

一句話概括: RPC是概念,HTTP是協議,RPC通信協議,可以基於HTTP協議,也可以基於TCP、UDP

RPC 的傳輸協議 & 序列化協議包含

RPC調用協議通常包含傳輸協議 和 序列化協議, 常用的傳輸協議是TCP、常用的序列化協議是Protobuf,當然也支持其他協議,具體可見上圖。

3.2 從傳輸協議上區分

HTTPRPC本質的區別,還是在傳輸協議上,雖然HTTPRPC底層都是通過TCP協議,但是RPC走的是自定義TCP協議,兩者主要的區別是在傳輸報文上,

HTTP1.1 協議的 tcp 報文:

HTTP/1.0 200 OK 
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 2021 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36

<html>
  <body>我是有效的消息</body>
</html>

從上面整個報文可以看出,有效消息Body在整個消息中, 佔比低, 而無效消息Header佔比卻很大,即使將Body使用二進制編碼協議,也無法減少整個報文體積,而RPC的自定義TCP協議,就是爲了去掉報文中無效的信息。

3.3 從 OSI 網絡模型區分

HTTP位於應用層協議,RPC常用的自定義TCP位於傳輸層協議,完整的OSI七層網絡模型,如下圖:

  1. RPC 調用流程圖

RPC 調用流程圖

  1. 常見的 RPC 框架

5.1 跟語言綁定框架

5.2 跨語言開源框架

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/dmqgbMdwZNsjCiWvFtcSbg