2018年4月-8月的项目里面用到了protobuf+gRPC技术,本文对这两种技术进行了总结,参考来源于网络,具体链接在文中。
protobuf 定义:是与json,XML功能相似的一种结构化数据格式,是一种google定义的结构化数据格式,用于在网络通讯间的数据序列化和反序列化,以用于网络传输。序列化:将数据结构或对象转换成二进制串的过程;反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。 特点:相对于其他格式,protobuf解析速度快(即序列化反序列化速度快),占用空间小,以及兼容性好,很适合做数据存储或网络通讯间的数据传输。 原理:
序列化 & 反序列化简单 & 速度快的原因是:
a. 编码 / 解码 方式简单(只需要简单的数学运算 = 位移等等,Varint、Zigzag编码)
b. 采用protobuf自身的框架代码和编译器共同完成
即序列化后的数据量体积小的原因是:
a. 采用了独特的编码方式,如Varint、Zigzag编码方式等等
b. 采用T - L - V 的数据存储方式:减少了分隔符的使用 & 数据存储得紧凑