邊學邊記:RPC框架調用過程
作者:八零后瑣話
RPC是遠程過程調用(Remote Procedure Call)的縮寫形式。它是一種通過網絡請求遠程計算機程序上的服務,而不需要了解底層網絡技術的協議,代碼中不用做額外的編程處理,就像直接調用本地方法一樣。
RPC簡介
RPC是遠程過程調用(Remote Procedure Call)的縮寫形式。它是一種通過網絡請求遠程計算機程序上的服務,而不需要了解底層網絡技術的協議,代碼中不用做額外的編程處理,就像直接調用本地方法一樣。
RPC框架角色
在RPC框架中有三個重要的角色:RPC Server、RPC Client和Registry,如下圖所示:

- RPC Server:即Provider,暴露服務的服務提供者
- RPC Client:即Consumer,調用遠程服務的服務消費者
- Registry:服務注冊與發現的服務注冊中心
RPC核心組件
RPC架構包含五個核心組件,Client,Client Stub,Server,Server Stub,NetWork Service,Stub可以理解為存根。

- Client:客戶端,服務的調用方
- Client Stub:客戶端存根,存放服務端的地址消息,負責將客戶端的請求信息組裝成網絡消息,通過網絡遠程發送給服務提供方
- Server:服務端,真正的服務提供方
- Server Stub:服務端存根,接收客戶端發來的消息,并將消息解壓后調用本地服務方法
- NetWork Service:底層網絡傳輸,可以是TCP或HTTP
RPC調用過程
RPC框架的整體調用過程,如下圖所示:

- 客戶端Client通過以本地調用的方式,調用遠程接口服務;
- 客戶端存根Client Stub接收到調用后,將調用信息對象進行序列化,組裝成網絡傳輸的二進制消息體;
- 客戶端Client通過Sockets將消息發送到遠程服務端;
- 服務端存根Server Stub收到消息后,對網絡信息對象進行反序列化解碼;
- 服務端存根Server Stub根據解碼結果,調用服務端本地的接口服務;
- 本地接口服務執行,并將處理結果返回給服務端存根Server Stub;
- 服務端存根Server Stub將返回結果對象進行序列化,組裝成消息體;
- 服務端Server再通過Sockets將消息發送到客戶端;
- 客戶端存根Client Stub收到結果消息后,對網絡信息對象進行序列化解碼;
- 客戶端Client拿到最終接口處理結果。
RPC構架的目標是就是把2、3、4、7、8、9步驟都封裝起來,讓調用方感覺像是調用本地方法一樣。

開源的RPC框架
- Dubbo:國內最早開源的 RPC 框架,由阿里巴巴公司開發并于 2011 年末對外開源,僅支持 Java 語言
- Spring Cloud:相比Dubbo等RPC框架, Spring Cloud提供全套的分布式系統解決方案
- gRPC:是Google開發的高性能、通用的開源RPC框架,支持多種語言。
責任編輯:未麗燕
來源:
今日頭條