前言
- gRPC 是一個高性能、開源和通用的 RPC 架構,面向移動和 HTTP/2 設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連接配接上的多複用請求等特。這些特性使得其在移動裝置上表現更好,更省電和節省空間占用。
- 在 gRPC 裡用戶端應用可以像調用本地對象一樣直接調用另一台不同的機器上服務端應用的方法,使得您能夠更容易地建立分布式應用和服務。
- gRPC 預設使用 protocol buffers,這是 Google 開源的一套成熟的結構資料序列化機制,它的作用與 XML、json 類似,但它是二進制格式,性能好、效率高(缺點:可讀性差)。
安裝 protobuf
1.下載下傳位址:https://github.com/protocolbuffers/protobuf/releases
根據自身電腦的作業系統,選擇最新的releases版本下載下傳
2.解壓後在bin目錄找到protoc.exe,然後把它複制到GOBIN目錄下
一般操作是把protoc.exe所在的目錄配到環境變量裡,這裡直接把protoc.exe複制到GOBIN目錄下,前提是環境變量已經配置了GOBIN環境變量。
3.打開cmd,運作
protoc --version
成功列印目前版本資訊證明安裝成功了。
安裝相關包
安裝 golang 的proto工具包
go get -u github.com/golang/protobuf/proto
安裝 goalng 的proto編譯支援
go get -u github.com/golang/protobuf/protoc-gen-go
安裝 gRPC 包
go get -u google.golang.org/grpc
建立并編譯proto檔案
1.建立proto檔案夾,在裡面建立simple.proto檔案
syntax = "proto3";// 協定為proto3
package proto;
// 定義發送請求資訊
message SimpleRequest{
// 定義發送的參數
// 參數類型 參數名 辨別号(不可重複)
string data = 1;
}
// 定義響應資訊
message SimpleResponse{
// 定義接收的參數
// 參數類型 參數名 辨別号(不可重複)
int32 code = 1;
string value = 2;
}
// 定義我們的服務(可定義多個服務,每個服務可定義多個接口)
service Simple{
rpc Route (SimpleRequest) returns (SimpleResponse){};
}
2.編譯proto檔案
cmd進入simple.proto所在目錄,運作以下指令進行編譯
protoc --go_out=plugins=grpc:./ ./simple.proto
VSCode-proto3插件介紹
使用VSCode的朋友看這裡,部落客介紹一個VSCode插件,友善對編輯和編譯proto檔案。
- 擴充程式中搜尋
,然後點選安裝。
VSCode-proto3
- 在設定中找到setting.json檔案,添加vscode-proto3插件配置
// vscode-proto3插件配置
"protoc": {
// protoc.exe所在目錄
"path": "C:\\Go\\bin\\protoc.exe",
// 儲存時自動編譯
"compile_on_save": true,
"options": [
// go編譯輸出指令
"--go_out=plugins=grpc:."
]
}
每次編輯完proto檔案後,隻需要儲存,它就會自動幫助完成編譯。而且代碼有高亮顯示,代碼自動補全,代碼格式化等功能。
教程源碼位址:https://github.com/Bingjian-Zhu/go-grpc-example
看完之後若覺得對自己有幫助,懇請點贊或評論。這是對我最大的鼓勵!