protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。
由于它是一种二进制的格式,比使用 xml 、json进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
protobuf的优缺点
优点
1 性能好/效率高
2 代码生成机制
3 支持“向后兼容”和“向前兼容”
4 支持多种编程语言
缺点
1 应用不够广(相比xml和json)
2 二进制格式导致可读性差
3 缺乏自描述
要想使用protobuf,需要4步:
环境配置
下载安装google protocol buffer 编辑器:https://github.com/google/protobuf/releases/tag/v3.5.1
下载安装golang protobuf plugin:https://github.com/golang/protobuf
使用go tools安装:go get -u github.com/golang/protobuf/protoc-gen-go
按照protobuf 语法规则编写.proto文件
将proto文件编译成golang代码模型
protoc -I=$SRC_DIR --go_out=$DST_DIR $SRC_DIR/addressbook.proto
-IPATH, --proto_path=PATH 指定import路径
–go_out 指定生成go代码路径