1.protobuf簡介
protobuf 即 Protocol Buffers,是一種輕便高效的結構化數據存儲格式,與語言、平臺無關,可擴展可序列化。protobuf 性能和效率大幅度優于 JSON、XML 等其他的結構化數據格式。protobuf 是以二進制方式存儲的,占用空間小,但也帶來了可讀性差的缺點。protobuf 在通信協議和數據存儲等領域應用廣泛。例如著名的分布式緩存工具?Memcached?的 Go 語言版本groupcache?就使用了 protobuf 作為其 RPC 數據格式。
Protobuf 在?.proto
?定義需要處理的結構化數據,可以通過?protoc
?工具,將?.proto
?文件轉換為 C、C++、Golang、Java、Python 等多種語言的代碼,兼容性好,易于使用。
2. gPRC 簡介
RPC 是遠程過程調用 (Remote Procedure Call) 的縮寫形式,gRPC 最初是由 Google 創建的,高性能、開源通用、跨語言和平臺 的 RPC 框架。
gRPC 使用 Protocol Buffers 定義服務,Protocol Buffers 是一個強大的二進制序列化工具集和語言。
3.安裝proto
官方Github鏈接:Releases · protocolbuffers/protobuf
進入鏈接后選擇自己電腦所屬系統的文件壓縮包并下載解壓到自己GOPATH所在目錄
可通過命令行輸入echo %GOPATH%或者go env命令找到GOPATH所在目錄
目錄組成
GOPATH目錄下一般由三個文件夾組成,分別是bin,src,pkg。
bin文件夾放的一般是你編譯之后產生的可執行程序;
src文件夾放的一般是你的代碼;
pkg文件夾放的一般是你的mod擴展;
如果你的GOPATH目錄下沒有這三個文件夾也沒關心,直接新建就好了,再回到系統環境變量中把PATH中添加上你的GOPATH目錄。
如何更改環境變量信息
之后,就可以修改自己的環境變量信息了,把解壓好的protoc.exe的運行程序移動到bin文件夾中。
到這一步,你的protoc就已經下載好了,可以打開命令行窗口輸入protoc --version測試一下如果輸出的是
代表你的系統環境變量中PATH下關于GOPATH的目錄路徑可能有問題,可以嘗試修改一下,如果輸出的是
代表你的proto的配置已經完成了
4. 安裝Go插件
需要安裝兩個 Go 插件:
protoc-gen-go-grpc:https://pkg.go.dev/google.golang.org/grpc/cmd/protoc-gen-go-grpc
protoc-gen-go:https://pkg.go.dev/google.golang.org/protobuf/cmd/protoc-gen-go
protoc-gen-go-grpc 工具用于在 gRPC 的 protobuf 定義文件中生成服務端的 Go 語言綁定(name_grpc.pb.go 文件)。
protoc-gen-go 是一個 protoc 插件,用于為 Protocol Buffer 語言的 proto2 和 proto3 版本生成 Go 代碼(name.pb.go 文件)。
使用 go install 命令安裝這兩個插件,:
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
安裝后在 ${GOPATH}/bin 目錄下將會多出兩個命令工具:protoc-gen-go-grpc、protoc-gen-go。
運行 protoc 命令生成 Go 代碼時,該命令內部將會在 PATH 環境變量中查找 protoc-gen-go-grpc 和 protoc-gen-go 這兩個命令。
5.編寫.proto文件生成.go文件
在你編寫完.proto后綴的文件之后,打開終端進入到項目中.proto文件所在文件夾運行命令
protoc --go_out=.?*.proto
之后在該文件夾下就會生成.pb.go后綴的文件,緊接著運行命令
?protoc --go-grpc_out=. *.proto
之后就會在該文件夾下生成_grpc.pb.go后綴的文件。
如此一來,你的項目就成功部署到了gRPC服務。