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或HTTPRPC呼叫過程
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框架,支援多種語言。
你還知道哪些優秀的開源RPC框架,歡迎評論並推薦。
最新評論