1、背景需求
通信协议设计,考虑了后续跨语言的支持(如Java、Python、C),需求一种序列化、反序列化的库
2、相关知识
Google Protocol BUffer 提供了一种适用于RPC系统、持续数据存储系统的混合语言数据标准,可用于通信协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前有C++、C、Java、Python三种语言的API。
2.1 protobuf的优点
1、通过数据结构的定义,能够生成结构相关的接口代码;
2、兼容性好,支持对现有数据结构添加新成员;
3、协议文本字段自动压缩,使用二进制传输;
详细的介绍可见参考文献[1],附上一张序列化技术相关的性能对比图:
2.2 数据格式
关于proto2还是proto3的选择可参考文献[4],考虑兼容性的问题,该文章采用的proto2方式定义[5];
.proto类型 |
Java 类型 |
C++类型 |
备注 |
double |
double |
double |
|
float |
float |
float |
|
int32 |
int |
int32 |