为什么使用Protobuf?


对于App网络传输协议,我们比较常见的、可选的,有三种,分别是json/xml/protobuf,老规矩,我们先分别来看看这三种格式的优缺点:

  • 优点:

    • json优点就是较XML格式更加小巧,传输效率较xml提高了很多,可读性还不错。
    • xml优点就是可读性强,解析方便。
    • protobuf优点就是传输效率快(据说在数据量大的时候,传输效率比xml和json快10-20倍),序列化后体积相比Json和XML很小,支持跨平台多语言,消息格式升级和兼容性还不错,序列化反序列化速度很快。
  • 缺点:

    • json缺点就是传输效率也不是特别高(比xml快,但比protobuf要慢很多)。
    • xml缺点就是效率不高,资源消耗过大。
    • protobuf缺点就是使用不太方便。

在一个需要大量的数据传输的场景中,如果数据量很大,那么选择protobuf可以明显的减少数据量,减少网络IO,从而减少网络传输所消耗的时间。考虑到作为一个主打社交的产品,消息数据量会非常大,同时为了节约流量,所以采用protobuf是一个不错的选择。

Protobuf的优点相关推荐

  1. 三种通用应用层协议protobuf、thrift、avro对比

    Google protobuf: 优点 二进制消息,性能好/效率高(空间和时间效率都很不错)     proto文件生成目标代码,简单易用     序列化反序列化直接对应程序中的数据类,不需要解析后在 ...

  2. Protobuf使用规范分享

    Protobuf使用规范分享 一.Protobuf 的优点 Protobuf 有如 XML,不过它更小.更快.也更简单.它以高效的二进制方式存储,比 XML 小 3 到 10 倍,快 20 到 100 ...

  3. linux加protobuf变量环境,protobuf简单介绍和ubuntu 16.04环境下安装教程

    protobuf简单介绍 protobuf是谷歌的开源序列化协议框架,结构类似于XML,JSON这种,显著的特点是二进制的,效率高,主要用于通信协议和数据存储等方面,算是一种结构化数据的表示方法. p ...

  4. pythongoogle.probuf.timestamp_gRPC快速入门(一)——Protobuf简介

    gRPC快速入门(一)--Protobuf简介 一.Protobuf简介 1.Protobuf简介 Protobuf即Protocol Buffers,是Google公司开发的一种跨语言和平台的序列化 ...

  5. Protobuf数据格式解析

    Protobuf数据格式解析 Protobuf是Google开源的一款类似于Json,XML数据交换格式,其内部数据是纯二进制格式,不依赖于语言和平台,具有简单,数据量小,快速等优点.目前用于序列化与 ...

  6. 开源项目SMSS发开指南(三)——protobuf协议设计

    本文的第一部分将介绍protobuf使用基础以及如何利用protobuf设计通信协议.第二部分会给出smss项目的协议设计规范和源码讲解. 一.Protobuf使用基础 什么是protobuf pro ...

  7. protobuf网络传输协议的优缺点

    为什么使用protobuf? protobuf常使用于作为C/S之间的数据传输的序列化工具,可以使用protobuf实现rpc框架的通信传输. 对于App网络传输协议,我们比较常见的.可选的,有三种, ...

  8. Google Protobuf 实践使用开发

    Android 敏捷开发助手 Lottie动画 轻松使用 PNG.JPG等普通图片高保真转SVG图 Android 完美的蒙层方案 Android MMKV框架引入使用 强大无匹的自定义下拉列表 Go ...

  9. python读写protobuf

    0.     前期准备 官方protobuf定义 https://code.google.com/p/protobuf/ python使用指南 https://developers.google.co ...

最新文章

  1. 使用AD8302进行检波
  2. Rushcrm:客户关系管理适合的才是好的
  3. graphpad做折线图坐标轴数字_多组数据制作折线图,四步让你的图表实用又美观,老板看了都说好...
  4. php 入口文件引入取别名,php命名空间别名/导入
  5. 比较两个引用的几种方法
  6. dicom文件_DICOM数据转成NIfTI数据
  7. PHP迸发,PHP 开发 「十宗罪」
  8. python bytes查找位置_Python进阶5---StringIO和BytesIO、路径操作、OS模块、shutil模块
  9. 红外倒车雷达原理图_汽车里的毫米波雷达你知多少?
  10. Swift - 触摸事件响应机制(UiView事件传递)
  11. Memcache集群安装与配置
  12. 太干了,Android 抓包姿势总结!
  13. 区块链会计案例_或许你也曾想过:区块链正在改变着会计行业!
  14. 计算机if函数自动填充,Excel表格函数怎么能实现自动填充-excel填充函数,excel表格根据公式自动填充...
  15. photoshop之合并图层
  16. android悬浮功能实现,Android利用悬浮按钮实现翻页效果
  17. 关于HTML中的滚动条
  18. java execute、executeQuery和executeUpdate之间的区别
  19. CSAPP lab2 经典的bomblab二次学习
  20. web漏洞之sql注入

热门文章

  1. 毕业设计一周一记06
  2. 解决安卓SDK更新连不通问题
  3. Android利用Filter过滤数据
  4. Properties类 解析xml文件问题
  5. 实现编辑商品信息功能
  6. ios php mysql实例_如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1
  7. mysql 类似wm concat_oracle中有没有类似于mysql中的group_concat的函数?
  8. 爬虫获取不到网页完整源码_你的第一只网络爬虫
  9. 中国红+金牛|传统农历年新年新春海报稳妥设计方案!
  10. 中国风吉祥纹样底纹背景,艾草绿和天青色趋势色彩