protobuf是谷歌开源的一种数据格式,适合高性能,对响应速度有要求的数据传输场景。因为profobuf是二进制数据格式,需要编码和解码。数据本身不具有可读性。因此只能反序列化之后得到真正可读的数据。
优势
- 序列化后体积相比Json和XML很小,适合网络传输
- 支持跨平台多语言
- 消息格式升级和兼容性还不错
- 序列化反序列化速度很快
安装
第一步:下载通用编译器protoc
注意:
protoc用于将 Protocol Buffers 的定义文件(通常以 .proto 扩展名结尾)编译成特定编程语言的代码。
地址:https://github.com/protocolbuffers/protobuf/releases
windows下载win版的,下载并解压。
可以将protoc.exe配置到环境变量,使得在任何位置都可以使用。
第二步:安装对应语言的生成器
在将.proto文件编译成对应语言的代码时,protoc通用编译器会自动调用对应语言的生成器。
安装golang的生成器
go install github.com/golang/protobuf/protoc-gen-go
将.proto文件生成为go代码
protoc --go_out=. *.proto
--go_out
:标志指定生成 Go 语言代码
.
: 表示生成在当前目录
*.proto
: 为要进行编译的.proto文件
将.proto文件生成为java代码(也可以在idea安装protobuf插件来生成)
protoc --java_out=. *.proto
.proto文件
会在.proto文件中定义消息类型。
例子:
//指定当前proto语法版本
syntax="proto3";
//生成的go文件的存放路径
option go_package="../";
//go文件的包名
package service;
// 定义消息类型
message Person {
// 字段1:姓名
string name = 1;
// 字段2:年龄
int32 age = 2;
// 字段3:电子邮件地址,使用repeated表示可重复
repeated string email = 3;
}