公司新来的CTO为google大牛,要求所有通信协议为protobuf,我也学习下protobuf。
众所周知,protobuf是类似thrift的语言无关、平台无关、可扩展的用来通信的数据结构,且被序列化了。与thrift相比,protobuf仅仅提供了消息序列化与反序列化的能力。
https://developers.google.com/protocol-buffers/docs/javatutorial?hl=zh-CN
1 定义消息格式
package tutorial;//如果不指定java_package选项,则次为默认的Java包名
option java_package = "com.example.tutorial";
option java_outer_classname = "AddressBookProtos";//包装消息体的类名,如果不知定,则生成的Java文件名为.proto的名称。
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
message AddressBook {
repeated Person person = 1;
}
在消息定义中,支持很多基本的域类型:
bool
,