数据交换格式protobuf/json/xml/binary/Thrift

标签: 技术荟萃 | 发表时间:2013-01-24 15:31 | 作者:黄言之
出处:http://blog.sina.com.cn/netreview

一条消息数据,用 protobuf序列化后的大小是 json的10分之一, xml格式的20分之一,是 二进制序列化的10分之一,总体看来ProtoBuf的优势还是很明显的

protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,详情访问 protobuf的google官方网站

protobuf在google中是一个比较核心的基础库,作为分布式运算涉及到大量的不同业务消息的传递,如何高效简洁的表示、操作这些业务消息在 google这样的大规模应用中是至关重要的。而protobuf这样的库正好是在效率、数据大小、易用性之间取得了很好的平衡。

protobuf简单总结如下几点:

  1. 灵活(方便接口更新)、高效(效率经过google的优化,传输效率比普通的XML等高很多);
  2. 易于使用;开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持java、c++、python等语言环境。通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。
  3. 多语言支持;原生支持c++,java,python

个人总结的适用protobuf的场合

  1. 需要和其它系统做消息交换的,对消息大小很敏感的。那么protobuf适合了,它语言无关,消息空间相对xml和json等节省很多。
  2. 小数据的场合。如果你是大数据,用它并不适合。
  3. 项目语言是c++,java,python的,因为它们可以使用google的源生类库,序列化和反序列化的效率非常高。其它的语言需要第三方或者自己写,序列化和反序列化的效率不保证。
  4. 总体而言,protobuf还是非常好用的,被很多开源系统用于数据通信的工具,在google也是核心的基础库。

此外,还有更牛叉的 facebook的thrift,2007 年由Facebook开发,之后在2008年加到Apache计划中。是一个跨语言的轻量级RPC消息和数据交换框架,Thrift能生成的语言有: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml,这是它的一大优点。

 

转载自: http://k.ifeng.com/149804/1957562


  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [数据 交换 格式] 推荐:

BSON:易于数据交换的格式

- Ken - python.cn(jobs, news)
BSON是由10gen开发的一个数据格式,目前主要用于MongoDB中,是MongoDB的数据存储格式. BSON基于JSON格式,选择JSON进行改造的原因主要是JSON的通用性及JSON的schemaless的特性. BSON主要会实现以下三点目标:. 对JSON格式来说,太大的JSON结构会导致数据遍历非常慢.

数据交换格式protobuf/json/xml/binary/Thrift

- - 互联网旁观者
一条消息数据,用 protobuf序列化后的大小是 json的10分之一, xml格式的20分之一,是 二进制序列化的10分之一,总体看来ProtoBuf的优势还是很明显的. protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,详情访问 protobuf的google官方网站.

数据交换和SOA服务共享

- - 人月神话的BLOG
数据本身只是一种资源,而服务是一种能力;数据仅限于各种结构化和非结构化的数据资源,对于数据资源提供的能力可以使一种数据服务,而数据资源+业务规则形成的某种业务能力也可以作为一种服务提供,也就是说各种技术,数据,业务,平台,流程能力都可以做为服务提供. 交换本质是资源会从一个系统通过传输的方式进入到多个系统,资源在多个系统中形成多种拷贝.

[转] 有关weka数据格式

- - 非技术 - ITeye博客
摘自:http://www.cnblogs.com/xiaoka/archive/2012/03/22/2412421.html. Weka简介 (http://www.china-pub.com/computers/common/info.asp?id=29304).       WEKA的全名是怀卡托智能分析环境(Walkato Environment for Knowledge Analysis),WEKA的开发者来自新西兰,而新西兰有一种鸟名字叫做weka,便是weka图标上的那只.

应用 HTML5 的 WebSocket 实现 BiDirection 数据交换

- - IBM developerWorks 中国 : 文档库
HTML5 是新一代的 Web 标准. 虽然 HTML5 标准还没有最终确定但是它已然成为主流,各大厂商都开始提前实现其草案中的功能. HTML5 提供了很多新特征,比如 Canvas、离线存储、多线程、视频标签等等. 其中一个很重要的特征是 WebSocket,它提供了一种双向全双工的服务器和客户端通信的功能.

Activity跳转的数据交换问题---学习笔记

- - CSDN博客推荐文章
问题一:有两个Activity(A和B),从A跳转到B,同时B需要A中的数据:. MainActivity类:. String sex = sex_rbtn.isChecked()?"男":"女";. //启动intent对应的Activity. SecondActivity类:. //获取启动该Result的Intent.

交换机原理与应用(附数据链路层封装)

- - 掘金 架构
连接多个以太网物理段,隔离冲突域. 对以太网帧进行高速而透明的交换转发. 自行学习和维护MAC地址信息. 交换机工作在二层,可以用来隔离冲突域,在OSI参考模型中,二层的作用是寻址,这边寻址指的是MAC地址,而交换机就是对MAC地址进行转发,在每个交换机中,都有一张MAC地址表,这个表是交换机自动学习的.

数据中心网络高可用技术之从交换机到交换机:MLAG, 堆叠技术

- - 卡瓦邦噶!
在 上一篇文章结束对链路聚合的讨论之后,我们发现一个问题——我们只能用多条线连接到同一个 switch 上面,这样万一这个交换机挂了,连接这个这个交换机的机器(通常是一个 Rack)就一起消失了. MLAG(Multi-Chassis Link Aggregation) 可以提供跨设备的链路聚合功能.

向Sql Server数据库中导入固定格式的txt文本数据

- - CSDN博客推荐文章
文本数据量比较大的时候,一条条的输入基本不可能,写个程序来中转一下也是很麻烦,幸运的是sql server提供了比较简洁的方法. 轻松搞定固定格式文本数据导入,比mysql的sql代码还要简洁. 作者:wj512416359 发表于2014-12-26 16:21:18 原文链接. 阅读:0 评论:0 查看评论.