Go語言RPC協定:遠端過程呼叫

2020-07-16 10:05:18
RPC 協定構建於 TCP、UDP 或者是 HTTP 之上,允許開發人員直接呼叫另一台計算機上的程式,而開發人員無需額外地為這個呼叫過程編寫網路通訊相關程式碼,使得開發網路分散式型別的應用程式更加容易。

Go語言的標準庫提供了 RPC 框架和不同的 RPC 實現。

什麼是 RPC

遠端過程呼叫(Remote Procedure Call,簡稱 RPC)是一個計算機通訊協定。該協定允許執行於一台計算機的程式呼叫另一台計算機的子程式,而開發人員無需額外地為這個互動作用程式設計。如果涉及的軟體採用物件導向程式設計,那麼遠端過程呼叫亦可稱作遠端呼叫或遠端方法呼叫。

通俗的來講就是,RPC 允許跨機器、跨語言呼叫計算機程式。例如我們用Go語言寫了一個獲取使用者資訊的方法 getUserInfo,並把Go語言程式部署在阿里雲伺服器上面,另外我們還有一個部署在騰訊雲上面的 php 專案,需要呼叫Go語言的 getUserInfo 方法獲取使用者資訊,php 跨機器呼叫 Go 方法的過程就是 RPC 呼叫。

RPC 的工作流程如下圖所示:

遠程過程調用
圖:遠端過程呼叫流程圖