1. 程式人生 > >RPC與gRPC

RPC與gRPC

RPC(Remote Procedure Call,遠端過程呼叫)是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路細節的應用程式通訊協議。RPC協議構建於TCP或UDP,或者是HTTP上。允許開發者直接呼叫另一臺伺服器上的程式,而開發者無需另外的為這個呼叫過程編寫網路通訊相關程式碼,使得開發網路分散式程式在內的應用程式更加容易
RPC採用客戶端-伺服器端的工作模式,請求程式就是一個客戶端,而服務提供程式就是一個伺服器端。當執行一個遠端過程呼叫時,客戶端程式首先先發送一個帶有引數的呼叫資訊到服務端,然後等待服務端響應。在服務端,服務程序保持睡眠狀態直到客戶端的呼叫資訊到達。當一個呼叫資訊到達時,服務端獲得程序引數,計算出結果,並向客戶端傳送應答資訊。然後等待下一個呼叫。

Go語言中的RPC支援與處理
在Go中,標準庫提供的net/rpc包實現了RPC協議需要的相關細節,開發者可以很方便的使用該包編寫RPC的服務端和客戶端程式。這使得用Go語言開發的多個程序之間的通訊變得非常簡單
net/rpc包允許PRC客戶端程式通過網路或者其他IO連線呼叫一個遠端物件的公開方法(該方法必須是外部可訪問即首字母大寫)。在PRC服務端,可將一個物件註冊為可訪問的服務,之後該物件的公開方法就能夠以遠端的方式提供訪問。

gRPC是一個高效能、開源、通用的RPC框架。基於HTTP/2協議標準設計開發,預設採用Protocol Buffers資料序列化協議Protocol Buffers基本語法,支援多種開發語言。gRPC提供了一種簡單的方法來精確的定義服務,並且為客戶端和服務端自動生成可靠的功能庫

訊息結構
用於請求和響應。原始檔中包含訊息傳遞的請求和響應結構。服務端註冊物件的方法 建立客戶端 以及呼叫服務端方法