简介
ProtoBuf (Google Protocol Buffer)是由google公司用于数据交换的序列结构化数据格式,具有跨平台、跨语言、可扩展特性,同类型有常用的XML及JSON,但具有更小的传输体积、更高的编码、解码能力,特别适合于数据存储、网络数据传输等对存储体积、实时性要求高的领域,目前已经发展到protoc3 版本。
优点:空间效率高,时间效率要高,对于数据大小敏感,传输效率高的
缺点:消息结构可读性不高,序列化后的字节序列为二进制序列不能简单的分析有效性
基本结构
syntax="proto3"; //文件第一行指定使用的protobuf版本,如果不指定,默认使用proto2
package services; //定义proto包名,可以为.proto文件新增一个可选的package声明符,可选
option go_package = ".;services"; //声明编译成go代码后的package名称,可选的,默认是proto包名
message ProdRequest{ //messaage可以理解为golang中的结构体,可以嵌套
int32 prod_id=1; //变量的定义格式为:[修饰符][数据类型][变量名] = [唯一编号] ,同一个message中变量的编号不能相同
}
message ProdResponse{
int32 pro_stock=1;
}
service ProdService{ //定义服务
rpc GetProdStock (ProdRequest