文章目录加载中

protobuf传输优化:Key-Value

protobuf 是以下面的形式传输的。优点如下:

  • Field 之间没有区分符号,节省字节
  • Key 是 filed_id

第 2 点比较难理解。比如一个 proto:

message demo {
  number age = 1;
}

对于 filed age 来说,field id 是 1。但是传输的时候不会传输 Key(也就是"age"),而是根据 field id 以及数据类型进行位运算,生成一个整数。规则如下

(field_id << 3) | wire_type

消费端接收到数据流后,可以很快通过位运算解出 filed(id+value)。然后根据 id,再去读取 proto 定义文件(生产端和消费端共有),将其处理成对应的 key。

流程如上,优化了网络传输数据量,更多逻辑放在本地。

本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog
0