前言
- 习惯用
Json、XML
数据存储格式的你们,相信大多都没听过Protocol Buffer
-
Protocol Buffer
其实 是Google
出品的一种轻量 & 高效的结构化数据存储格式,性能比Json、XML
真的强!太!多!
由于
Protocol Buffer
已经具备足够的吸引力
- 今天,我将献上一份全面 & 详细的
Protocol Buffer
攻略,含介绍、特点、具体使用、源码分析、序列化原理等等,希望您们会喜欢。
目录
示意图1. 定义
一种 结构化数据 的数据存储格式(类似于 XML、Json
)
Protocol Buffer
目前有两个版本:proto2
和proto3
- 因为
proto3
还是beta 版,所以本次讲解是proto2
2. 作用
通过将 结构化的数据 进行 串行化(序列化),从而实现 数据存储 / RPC 数据交换的功能
- 序列化: 将 数据结构或对象 转换成 二进制串 的过程
- 反序列化:将在序列化过程中所生成的二进制串 转换成 数据结构或者对象 的过程
3. 特点
- 对比于 常见的
XML、Json
数据存储格式,Protocol Buffer
有如下特点:
4. 应用场景
传输数据量大 & 网络环境不稳定 的数据存储、RPC 数据交换 的需求场景
如 即时IM (QQ、微信)的需求场景
总结
在 传输数据量较大的需求场景下,Protocol Buffer
比XML、Json
更小、更快、使用 & 维护更简单!
5. 序列化原理解析
- 序列化的本质:对数据进行编码 + 存储
-
Protocol Buffer
的性能好:传输效率快,主要原因 = 序列化速度快 & 序列化后的数据体积小,其原因如下:
-
序列化速度快的原因:
a. 编码 / 解码 方式简单(只需要简单的数学运算 = 位移等等)
b. 采用PB
自身的框架代码 和 编译器 共同完成 -
序列化后的数据量体积小(即数据压缩效果好)的原因:
a. 采用了独特的编码方式,如Varint
、Zigzag
编码方式等等
b. 采用T - L - V
的数据存储方式:减少了分隔符的使用 & 数据存储得紧凑
更加详细的介绍,请看文章:Protocol Buffer 序列化原理大揭秘 - 为什么Protocol Buffer性能这么好?
至此, 关于Protocol Buffer
的序列化原理讲解完毕。下面将继续讲解如何具体使用Protocol Buffer
6. 使用步骤 & 实例讲解
使用 Protocol Buffer
的流程如下:
下面,我将对流程中的每个流程进行详细讲解。
6.1 环境配置
- 要使用
Protocol Buffer
,需要先在电脑上安装Protocol Buffer
- 具体请看文章:手把手教你如何安装Protocol Buffer
至此, Protocol Buffer
已经安装完成。下面将讲解如何具体使用Protocol Buffer
6.2 构建 Protocol Buffer
消息对象模型
- 构建步骤具体如下:
- 下面将通过一个实例(
Android(Java)
平台为例)详细介绍每个步骤。 - 具体请看文章:这是一份很有诚意的 Protocol Buffer 语法详解
至此, 关于Protocol Buffer
的语法 & 如何构建Protocol Buffer
消息对象模型讲解完毕。下面将继续讲解如何具体使用Protocol Buffer
6.3 应用到具体平台(Android
平台)
- 终于到了应用到具体平台项目中的步骤了。
此处以
Android
平台 为例
- 具体步骤如下:
至此, 关于Protocol Buffer
的使用讲解完毕。下面将讲解Protocol Buffer
的源码分析
7. 源码分析
7.1 核心分析
在下面的源码分析中,主要分析的是:
-
Protocol Buffer
具体是如何进行序列化 & 反序列化 ? - 与
XML、Json
相比,Protocol Buffer
序列化 & 反序列化速度 为什么如此快 & 序列化后的数据体积这么小?
本文主要讲解
Protocol Buffer
在Android
平台上的应用,即Java
平台
7.2 具体描述
具体的源码分析请看文章:Android:手把手带你分析 Protocol Buffer使用 源码
至此,关于 Protocol Buffer
的所有内容讲解完毕,含介绍、特点、具体使用、源码分析、序列化原理等等。
8. 总结
- 在 传输数据量较大的需求场景下,
Protocol Buffer
比XML、Json
更小、更快、使用 & 维护更简单! - 下面用 一张图 总结在 Android平台中使用
Protocol Buffer
的整个步骤流程:
- 关于
Protocol Buffer
的系列文章请看: - 下一篇文章我将对
Protocol Buffer
进行源码分析,有兴趣可以继续关注Carson_Ho的安卓开发笔记
请点赞!因为你的鼓励是我写作的最大动力!
相关文章阅读
Android开发:最全面、最易懂的Android屏幕适配解决方案
Android事件分发机制详解:史上最全面、最易懂
Android开发:史上最全的Android消息推送解决方案
Android开发:最全面、最易懂的Webview详解
Android开发:JSON简介及最全面解析方法!
Android四大组件:Service服务史上最全面解析
Android四大组件:BroadcastReceiver史上最全面解析
欢迎关注Carson_Ho的简书!
不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度。
网友评论
最近写分布式系统用到Protocol Buffer,谢谢啦!!!!
pbuffer在数据量大的时候优势才显示
linkedinfo.co 是一个集合了各类优秀技术文章的站点,不展现全文,所有条目都附上作者与原文链接,读者最终都会进入到作者原文的站点。做 linkedinfo 的初衷是想方便自己且方便其他想学习的朋友,能更方便地找到自己感兴趣的技术文章。同时这也是一个我自己练习的过程,比如将正在学习的 Semantic Web 技术应用到 linkedinfo 来更好地连接不同的知识。
各位感兴趣的朋友可以去 https://linkedinfo.co 看看,非常希望能得到你们的意见与建议 (可在about 页面留言 https://linkedinfo.co/about )。