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服务。