首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >protobuffer的前世今生(一)——简介

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

作者头像
MickyInvQ
发布2020-09-27 10:06:30
9390
发布2020-09-27 10:06:30
举报
文章被收录于专栏:InvQ的专栏InvQ的专栏

一、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的数据存储方式:减少了分隔符的使用 & 数据存储得紧凑
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、pb介绍
  • 二、为什么发明pb
  • 三、作用
  • 四、特点
  • 五、应用场景
  • 六、序列化原理解析
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档