protobuffer的前世今生(一)——简介

时间:2022-07-25
本文章向大家介绍protobuffer的前世今生(一)——简介,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、pb介绍

Protocol buffers 在序列化数据方面,它是灵活的,高效的。相比于 XML 来说,Protocol buffers 更加小巧,更加快速,更加简单。一旦定义了要处理的数据的数据结构之后,就可以利用 Protocol buffers 的代码生成工具生成相关的代码。只需使用 Protobuf 对数据结构进行一次描述,即可利用各种不同语言或从各种不同数据流中对你的结构化数据轻松读写。 Protocol buffers 很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式

二、为什么发明pb

大家可能会觉得 Google 发明 protocol buffers 是为了解决序列化速度的,其实真实的原因并不是这样的。protocol buffers 最先开始是 google 为了解决服务器端新旧协议(高低版本)兼容性问题,名字也很体贴,“协议缓冲区”。只不过后期慢慢发展成用于传输数据。

三、作用

通过将 结构化的数据 进行 串行化(序列化),从而实现 数据存储 / RPC 数据交换的功能

序列化: 将 数据结构或对象 转换成 二进制串(字节数组) 的过程 反序列化:将在序列化过程中所生成的二进制串 转换成 数据结构或者对象 的过程

四、特点

五、应用场景

传输数据量大 & 网络环境不稳定 的数据存储、RPC 数据交换 的需求场景

六、序列化原理解析

  • 序列化的本质:对数据进行编码+存储
  • Protocol Buffer的性能好:传输效率快,主要原因 = 序列化速度快 & 序列化后的数据体积小,其原因如下:
    • 1.序列化速度库的原因:
      • 编码、解码方式简单(只需要简单的数学运算=位移)
      • 采用pb自身的框架和编译器共同完成。
    • 2.序列化后的数据量体积小(即数据压缩效果好)的原因:
      • 采用了独特的编码方式,如Varint、Zigzag编码方式等等
      • 采用T - L - V的数据存储方式:减少了分隔符的使用 & 数据存储得紧凑