简介
Protocol Buffers(协议缓冲区)是一种语言中立、平台中立的可扩展机制,用于序列化结构化数据,类似于XML和json,但protobuf更小巧,更快速,更简单。
数据格式与优缺点
xml:
<person>
<name>xx</name>
<age>24</age>
</person>
json:
{
"name":"xx",
"age":24
}
protobuf(使用二进制表示):
[10 6 69 108 108 105 111 116 16 24]
优点:
1、性能好效率高,序列化协议考虑字节码流大小与反序列化的cpu资源消耗。
2、短生命周期的rpc中更广泛使用。短小快
3、支持多种语言。
缺点:
1、二进制可读性差、缺乏描述(主要)
2、通用性比较差
例子说明
技术实现
//使用协议
syntax = "proto3";
option java_multiple_files = true;
option java_package = "com.jidaojiuyou.demo";
option java_outer_classname = "RuleProto";
//包名称
package api.billingrule.v1;
//服务接口.定义请求参数和相应结果
service Rule {
rpc Charge (ChargeRequest) returns (ChargeReply) {}
}
//请求提
message ChargeRequest {
string beginTime = 1;
string endTime = 2;
string ruleId = 3;
}
//相应体
message ChargeReply {
double fee = 1;
}
生成特定的Protobuf文件