什么是ProtoBuf?

一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。

它可以作为RabbitMQ的Message的数据格式进行传输,由于是结构化的数据,这样就极大的方便了Consumer的数据高效处理。当然了你可能说使用XML不也可以吗?与XML相比,ProtoBuf有以下优势:

  1. 简单
  2. size小了3-10倍
  3. 速度快乐20-100倍
  4. 易于编程
  5. 减小了语义的歧义

当然了,的确还有很多类似的技术,比如JSON,Thrift等等,和他们相比,ProtoBuf的优势或者劣势在哪里?简单说来,ProtoBuf就是 简单,快。以测试为证:项目 thrift-protobuf-compare 比较了这些类似的技术,下图 显示了该项目的一项测试结果。

在占用空间上的性能比较:

由此可见,ProtoBuf具有速度和空间的优势,使得它现在应用非常广泛。比如Hadoop就使用了它。

更多信息,请阅 http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/。

转:

http://blog.csdn.net/anzhsoft/article/details/19771671

RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer) [转]相关推荐

  1. 【C++】Google Protocol Buffer(protobuf)详解(一)

    1.简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准, Protocol Buffers 是一种轻便高效的结构化数据存储格式 ...

  2. RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列

    上一篇已经讲了Rabbitmq如何在Windows平台安装,不懂请移步:RabbitMQ学习系列一:windows下安装RabbitMQ服务 一.理论: .net环境下,C#代码调用RabbitMQ消 ...

  3. 使用EasyNetQ组件操作RabbitMQ消息队列服务

    RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...

  4. 初探 RabbitMQ 消息队列

    初探 RabbitMQ 消息队列 rabbitmq基础概念常见应用场景导入依赖属性配置具体编码定义队列实体类控制器消息消费者主函数测试总结说点什么 SpringBoot 是为了简化 Spring 应用 ...

  5. 消息队列——RabbitMQ消息队列集群

    RabbitMQ消息队列集群 消息队列/中间件 RabbitMQ详解 RabbitMQ单机部署 RabbitMQ集群部署 消息队列/中间件 一.前言 在我们秒杀抢购商品的时候,系统会提醒我们稍等排队中 ...

  6. RabbitMQ 消息队列入门

    什么是 RabbitMQ MQ(Message Queue)消息队列 消息队列中间件,是分布式系统中的重要组件:主要解决异步处理.应用解耦.流量削峰等问题,从而实现高性能,高可用,可伸缩和最终一致性的 ...

  7. RabbitMQ消息队列(一)《Java-2021面试谈资系列》

    RabbitMQ RabbitMQ消息队列 一.中间件 1.什么是中间件 2.中间件技术及架构概述 3.消息中间件 1.消息中间件的分布式架构 2.消息中间件使用场景 3.常见的消息中间件 4.消息中 ...

  8. RabbitMQ消息队列(十三)-VirtualHost与权限管理

    像mysql有数据库的概念并且可以指定用户对库和表等操作的权限.那RabbitMQ呢?RabbitMQ也有类似的权限管理.在RabbitMQ中可以虚拟消息服务器VirtualHost,每个Virtua ...

  9. rabbitMQ消息队列 – 面板介绍及简单demo

    首先rabbit安装好之后,运维会给一个控制面板. 默认账号密码为guest 登入以后可以看到具体界面. 在此鸣谢百度翻译给予的大力支持.. ###写一个简单的demo 编写之前..虽然说可以直接用底 ...

最新文章

  1. mysql按升序创建索引_Mysql中的降序索引底层实现
  2. 漫谈数据库索引 | 脚印 footprint(转载)
  3. 【项目管理】git和码云的使用
  4. 前端学习(2130):编译作用域的概念
  5. php 查询数据排序,php如何对查询结果集进行排序
  6. PostgreSQL11.7逻辑复制的搭建
  7. 新手该怎么独立做跨境电商?做之前需要准备什么?
  8. Java将hive数据导入到hdfs_sqoop数据导入到Hdfs 或者hive
  9. 神经网络- 吴恩达Andrew Ng CNN卷积神经网络 论文等资料汇总
  10. codemirror实现SQL代码自动提示功能
  11. Linux - ZModem协议的sz命令传输文件异常
  12. 网络信息安全之纵深防御
  13. win10安装wget
  14. STM32 LL库串口丢包问题与解决
  15. 非标自动化设计全过程,建议收藏
  16. GE Predix 详解
  17. 学习笔记-部署和管理DPM 2016-04文件和应用程序保护
  18. 苹果cms模板_苹果CMS提示“模板文件不存在”怎么办?
  19. C++ GUI Programming with Qt4 Second Edition 之 附录A.2 Windows系统Qt的安装
  20. 如何选择统计检验方法

热门文章

  1. Libelle(容灾)
  2. 如何找到 AWS 环境下应用程序中易于得手的漏洞?
  3. 奇安信代码安全实验室帮助谷歌修复 Chrome 沙箱外高危漏洞,获官方致谢
  4. 英国国家网络安全中心:速修复严重的 MobileIron RCE 漏洞 (CVE-2020-15505)
  5. 索尼推出 PlayStation 漏洞奖励计划,最严重漏洞5万美元起步
  6. VLC 媒体播放器 libmicrodns 库修复 RCE 漏洞
  7. 警惕新型“二进制植入”漏洞,立即更新至 Npm 最新版本
  8. ActiveMQ从入门到精通(二)
  9. 部署全局ajax处理
  10. WP7中,如何把7.1的项目改为7.0的