Go RPC 開發指南
Go RPC 開發指南
本書首先介紹了使用Go官方庫開發RPC服務的方法,然後介紹流行gRPC庫以及其它一些RPC框架如Thrift等,後面重點介紹高效能的分散式全功能的RPC框架 rpcx。讀者通過閱讀本書,可以快速學習和了解Go生態圈的RPC開發技術,並且應用到產品的開發中。
RPC介紹
遠端過程呼叫(Remote Procedure Call,縮寫為 RPC)是一個計算機通訊協議。 該協議允許執行於一臺計算機的程式呼叫另一臺計算機的子程式,而程式設計師無需額外地為這個互動作用程式設計。 如果涉及的軟體採用物件導向程式設計,那麼遠端過程呼叫亦可稱作遠端呼叫或遠端方法呼叫,比如 Java RMI。
有關RPC的想法至少可以追溯到1976年以“信使報”(Courier)的名義使用。RPC首次在UNIX平臺上普及的執行工具程式是SUN公司的RPC(現在叫ONC RPC)。它被用作SUN的NFC的主要部件。ONC RPC今天仍在伺服器上被廣泛使用。 另一個早期UNIX平臺的工具是“阿波羅”計算機網路計算系統(NCS),它很快就用做OSF的分佈計算環境(DCE)中的DCE/RPC的基礎,並補充了DCOM。
遠端過程呼叫是一個分散式計算的客戶端-伺服器(Client/Server)的例子,它簡單而又廣受歡迎。 遠端過程呼叫總是由客戶端對伺服器發出一個執行若干過程請求,並用客戶端提供的引數。執行結果將返回給客戶端。 由於存在各式各樣的變體和細節差異,對應地派生了各式遠端過程呼叫協議,而且它們並不互相相容。
為了允許不同的客戶端均能訪問伺服器,許多標準化的 RPC 系統應運而生了。其中大部分採用介面描述語言(Interface Description Language,IDL),方便跨平臺的遠端過程呼叫。 來自microsoft
從上圖可以看出, RPC 本身是 client-server模型,也是一種 request-response 協議。 有些實現擴充套件了遠端呼叫的模型,實現了雙向的服務呼叫,但是不管怎樣,呼叫過程還是由一個客戶端發起,伺服器端提供響應,基本模型沒有變化。 服務的呼叫過程為:
- client呼叫client stub,這是一次本地過程呼叫
- client stub將引數打包成一個訊息,然後傳送這個訊息。打包過程也叫做 marshalling
- client所在的系統將訊息傳送給server
- server的的系統將收到的包傳給server stub
- server stub解包得到引數。 解包也被稱作 unmarshalling
- 最後server stub呼叫服務過程. 返回結果按照相反的步驟傳給client
相關文章
- Go微服務開發指南Go微服務
- Go Web開發入坑指南GoWeb
- Go RpcGoRPC
- go語言遊戲服務端開發(四)——RPC機制Go遊戲服務端RPC
- go-micro開發RPC服務的方法及其執行原理GoRPC
- go語言實現自己的RPC:go rpc codecGoRPC
- rpc的正確開啟方式|讀懂Go原生net/rpc包RPCGo
- go rpc 原始碼分析GoRPC原始碼
- 開發指南
- [從RPC到Go-Micro 壹]Go語言實現RPC程式設計RPCGoC程式程式設計
- Go 指南Go
- Go語言實現RPCGoRPC
- php開發的js逆向rpc框架PHPJSRPC框架
- 雲端計算開發-RPC應用RPC
- Go 開發技巧Go
- GCC開發指南GC
- Go 實現簡易 RPC 框架GoRPC框架
- 開始Go開發之旅Go
- go-zero學習之RPC呼叫GoRPC
- SuperTextView 最全開發指南TextView
- ADO 開發指南
- Go 開發關鍵技術指南 | Go 面向失敗程式設計 (內含超全知識大圖)Go程式設計
- Go 原生 RPC 與 APRC 的簡單使用GoRPC
- Go標準包——net/rpc包的使用GoRPC
- 一文吃透 Go 內建 RPC 原理GoRPC
- 在Go語言中使用 Protobuf-RPCGoRPC
- Go 快速指南:go1.18 特性Go
- 搭建go開發環境Go開發環境
- Go API 開發基礎GoAPI
- go語言安卓開發Go安卓
- 軟體開發命名指南
- 前端離線開發指南前端
- MaxCompute Mars開發指南
- Redis開發使用指南Redis
- Web 開發進階指南Web
- SuperWebview開發指南AndroidWebViewAndroid
- Web開發初學指南Web
- iOS開發 - 介面尺寸指南iOS