安裝請參考官方資料-快速開始,安裝gRPC需要安裝Go、protocol buffer、protoc-gen-go、gRPC等。
1.安裝Go,grpc是用Golang開發的,所以需要安裝Go;
2.下載protocol buffer,這是gRPC的協議編譯工具,寫好proto之后,需要用這個編譯。windows下直接下載編譯好的包,然后將bin目錄加到環境變量
查看版本
protoc --version
3.安裝相關插件:protoc-gen-go; 編譯協議需要用到該包
export GO111MODULE=on # Enable module mode
go get github.com/golang/protobuf/protoc-gen-go
4.安裝gRPC包
go get google.golang.org/grpc
5.編寫gRPC協議
syntax = "proto3";
package test
// 定義 Req 消息結構
message Req {
// 類型 字段 = 標識號
string jsonStr = 1;
}
// 定義 Res 消息結構
message Res {
string backJson = 1;
}
// 可以定義多個服務,每個服務內可以定義多個接口
service Waiter {
// 定義接口 (結構體可以復用)
// 方法 (請求消息結構體) returns (返回消息結構體) {}
rpc DoMD5 (Req) returns (Res) {}
}
6.編譯協議
protoc --go_out=plugins=grpc:./test/ ./test.proto
- 測試demo,最好使用官方demo
- 可能會遇到的問題
8.1.undefined: grpc.SupportPackageIsVersion6 和 undefined: grpc.ClientConnInterface 解決辦法
這是因為grpc的版本和protoc-gen-go版本不一致造成的。刪除這兩個包。安裝最新的即可。參考資料
go get -u google.golang.org/grpc
export GO111MODULE=on # Enable module mode
go get github.com/golang/protobuf/protoc-gen-go
8.2.protoc-gen-go-grpc:找不到程序或不可執行(protoc-gen-go-grpc: program not found or is not executable)
沒有安裝protoc-gen-go,也有可能是環境變量沒生效(關閉shell客戶端,重新打開即可)
export GO111MODULE=on # Enable module mode
go get github.com/golang/protobuf/protoc-gen-go