protocol buffers vs json vs XML】的更多相关文章

原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com   在分布式系统中,数据序列化传递的情形非常常见,主流的三种,JSON.XML.Protobuf.   XML现在已经很少使用,除非要和遗留系统交互.   JSON用在前端交互和跨组织的API的交互场合比较多.   对于内部系统,特别是性能敏感的区域,推荐使用Protobuf,可以得到最快的序列化速度和最小的结果.   参考资料: http://stackoverflow.com/questions/14028…
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元.  -----------------------------------------------------------------------------------…
为什么专门开一个坑,来使用pb.放弃本在各平台上都支持得很好的json而使用pb的一个归根到底的理由,就是希望在保证强类型和跨平台的情况下,能够更轻,更快,更简单.既然是奔着这个目标去的,到底多快我需要一个合理的解释. 在使用pure python官方库的的情况下,对比了pb和json标准库,还有simplejson库的速度. 使用的.proto文件文件如下: syntax = "proto2"; package hello_word; message SayHi { required…
首先,我使用protobuf作为IDL,然后提供HTTP POST + JSON BODY的方式来发送请求. 能不能使用HTTTP POST + PB序列化后的二进制BODY呢? 做了一下尝试,非常简单: func Report(c *gin.Context) { req := protocols.ReportRequest{} var err error if c.ContentType() == "application/x-protobuf" { err = c.ShouldBi…
目录 序列化与反序列化 Protocol Buffers概览 Protocol Buffers C++ 编译 Protocol Buffers C++ 使用 Protocol Buffers的可读性 参考 博客:blog.shinelee.me | 博客园 | CSDN Protocol Buffers docs:https://developers.google.com/protocol-buffers/docs/overview github:https://github.com/proto…
什么是 protocol buffers ? Protocol buffers 是一种灵活.高效的序列化结构数据的自动机制--想想XML,但是它更小,更快,更简单.你只需要把你需要怎样结构化你的数据定义一次,你就能使用特殊生成的代码来方便的用多种语言从一系列数据流中读写你的结构化数据.你甚至不需要中断你用"老"结构编译好的已经部署的程序来更新你的数据结构. 它是怎样工作的? 你在一个名为.proto的文件里用protocol buffer message 定义你需要序列化数据的结构.每…
简介 这篇博客主要对Xml,Json,Hessian,Protocol Buffers的序列化和反序列化性能进行对比,Xml和Json的基本概念就不说了. Hessian:Hessian是一个轻量级的remoting onhttp工具,提供了RMI的功能,采用的是二进制RPC协议,内置了序列化功能. Protocol Buffers:google的一种数据交换的格式,它独立于语言,由于它是一种二进制的格式,比使用 xml 进行数据交换快许多,可以把它用于分布式应用之间的数据通信或者异构环境下的数…
前言 习惯用 Json.XML 数据存储格式的你们,相信大多都没听过Protocol Buffer Protocol Buffer 其实 是 Google出品的一种轻量 & 高效的结构化数据存储格式,性能比 Json.XML 真的强!太!多! 由于 Google出品,我相信Protocol Buffer已经具备足够的吸引力 今天,我将献上一份 Protocol Buffer的介绍 & 使用攻略,希望你们会喜欢. 目录 目录 1. 定义 一种 结构化数据 的数据存储格式(类似于 XML.Js…
前言 习惯用 Json.XML 数据存储格式的你们,相信大多都没听过Protocol Buffer Protocol Buffer 事实上 是 Google出品的一种轻量 & 高效的结构化数据存储格式,性能比 Json.XML 真的强!太! 多! 由于 Google出品,我相信Protocol Buffer已经具备足够的吸引力 今天,我将献上一份 Protocol Buffer的介绍 & 使用攻略,希望你们会喜欢. 文件夹 1. 定义 一种 结构化数据 的数据存储格式(相似于 `XML.J…
Protocol buffers 是一个由谷歌开发的开源的编码机制用于将结构化的数据序列化或者反序列化,被设计成语言以及平台中立,protobuff比xml更简单比json还要紧凑一些,网上有一些关于对比他与一些序列化的对比这里就不再赘述.这里主要说一下在C#/dotNet里是怎么运行的. 1.下载google-protobuff的源码或者直接去下载别人编译好的dll也可以.如果是源码在VS2015里编译一下如果没有问题会生成Google.Protobuf.dll 2.定义数据结构,注意这里定义…
[http://blog.csdn.net/zhu_xun/article/details/19397081] protocol buffers的使用示例 如果不了解protocol buffers,可以先参看:http://blog.csdn.net/zhu_xun/article/details/19343079 本例的protobuf的版本为2.5.0,运行环境为windows平台(当然,在Linux下使用的方法也一样,只不过是使用shell脚本驱动protobuf程序的运行) 下载pro…
一,netty+protocol buffers简要说明 Netty是业界最流行的NIO框架之一优点:1)API使用简单,开发门槛低:2)功能强大,预置了多种编解码功能,支持多种主流协议:3)定制能力强,可以通过ChannelHandler对通信框架进行灵活的扩展:4)性能高,通过与其它业界主流的NIO框架对比,Netty的综合性能最优:5)成熟.稳定,Netty修复了已经发现的所有JDK NIO BUG,业务开发人员不需要再为NIO的BUG而烦恼:6)社区活跃,版本迭代周期短,发现的BUG可以…
基本概念 Protocol Buffers(以下简称PB)是一种独立于语言.独立于开发平台.可扩展的序列化数据结构框架,它常常被用在通信.数据序列化保存等方面. PB是一种敏捷.高效.自动化的用于对数据进行序列化的框架.同XML比较,比XML更小.更快.更简单.你一旦定义了期望的数据结构,就可以根据定义生成特定的源码,从而轻而易举地对你的数据进行读写操作,你甚至可以在不修改原来的程序源码的情况下,更新自己的之前定义的数据结构. PB与其他协议的比较 语言: PB与Json都是跨语言的,PB支持C…
Protocol Buffers编码详解,例子,图解 本文不是让你掌握protobuf的使用,而是以超级细致的例子的方式分析protobuf的编码设计.通过此文你可以了解protobuf的数据压缩能力来自什么地方,版本兼容如何做到的,其Key-Value编码的设计思路.如果你详细了解此文,你应该就能具备自己造一套编解码轮子的能力(至少基本思路). 测试的例子 阅读图片时请对比前面的例子和表格.每个字段的名称都是包含了tag的. message S2 { optional int32 s2_1 =…
http://blog.csdn.net/socoolfj/article/details/3855007 最新版本的Hadoop代码中已经默认了Protocol buffer作为RPC的默认实现,原来的WritableRpcEngine已经被淘汰了.来自cloudera的Aaron T. Myers在邮件中这样说的"since PB can provide support for evolving protocols in a compatible fashion."   proto…
Protocol Buffers(简称protobuf)是谷歌的一项技术.用于将结构化的数据序列化.反序列化.经经常使用于网络传输. 这货实际上相似于XML生成和解析.但protobuf的效率高于XML,只是protobuf生成的是字节码,可读性比XML差.相似的还有json.Java的Serializable等. protobuf支持各种语言.本文以Java为例.简介protobuf怎样使用. 其它语言用法相似. 首先须要下载: http://download.csdn.net/downloa…
最近看公司代码的过程中,看到了很多proto后缀的文件,这是个啥玩意?问了大佬,原来这是Protocol Buffers! 这玩意是干啥的?查完资料才知道,又是谷歌大佬推的开源组件,这玩意完全可以取代XML和JSON的数据交换格式,而且更加快! Protocol Buffer 即 PB 是大 Google 公司推行的一套混合语言数据标准, 标准介绍如下: 是 Google 开源的一种轻便高效的结构化数据存储格式,可以用于结构化数据的串行化,也称作序列化,主要用于数据存储或是 RPC 数据交换,支…
随着微服务架构的流行,RPC框架渐渐地成为服务框架的一个重要部分. 在很多RPC的设计中,都采用了高性能的编解码技术,Protocol Buffers就属于其中的佼佼者. Protocol Buffers是Google开源的一个语言无关.平台无关的通信协议,其小巧.高效和友好的兼容性设计,使其被广泛使用. 概述 protobuf是什么? Protocol buffers are Google’s language-neutral, platform-neutral, extensible mec…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com protobuf Protocol Buffers 简介 案例 目录 目录简介优缺点proto3简介使用步骤下载 protobuf 编译器编写 .proto 文件编译 .proto 文件生成 java 类项目中添加 protobuf runtime测试 java 类在 Android 中使…
简要介绍和总结protobuf的一些关键点,从我之前做的ppt里摘录而成,希望能节省protobuf初学者的入门时间.这是一个简单的Demo. Protobuf 简介 Protobuf全称Google Protocol Buffers http://code.google.com/p/protobuf 结构化数据存储格式(xml, json) 用于通信协议.数据存储等 高效的序列化和反序列化 语言无关.平台无关.扩展性好 官方支持C++, Java, Python三种语言 .proto文件 定义…
protocol buffers使用二进制传输格式传递消息,因此相比于xml,json来说要轻便很多. 示例:假设定义了一个Message message Test1 { required int32 a = ; } 实际使用的时候将a设置为150,然后将其序列化到输出流,查看编码后的message,可以看到如下3个byte 解析: 上述三个字节实际分为两部分: 08  96 01.第一部分(08)包含了message成员变量的field number(a=1)和变量类型(Varint),第二部…
Hadoop基础-Protocol Buffers串行化与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过很多种序列化文件格式,比如python中的pickle序列化方式(https://www.cnblogs.com/yinzhengjie/p/8531308.html),golang的Gob序列化方式(https://www.cnblogs.com/yinzhengjie/p/7807051.html),hadoop的SequenceFile序列化文…
Protocol Buffers是Google开发一种数据描述语言,能够将结构化数据序列化,可用于数据存储.通信协议等方面. 不了解Protocol Buffers的同学可以把它理解为更快.更简单.更小的JSON或者XML,区别在于Protocol Buffers是二进制格式,而JSON和XML是文本格式. 相对于XML,Protocol Buffers的具有如下几个优点: 简洁 体积小:消息大小只需要XML的1/10 - 1/3: 速度快:解析速度比XML快20 - 100倍: 使用Proto…
前言: 公司后端使用的是go语言,想尝试用pb和前端进行交互,于是便有了这一次尝试,共计花了一星期时间,网上能查到的文档几乎都看了一遍,但大多都是教在node环境下如何使用,普通的js环境下很多讲述的并不清楚,于是把自己的采坑之路总结一下,希望能让给大家提供一些参考. 背景知识: 还没听说过Protocol Buffers ? 传送门,简单的说,他和json.xml等类似,是一种数据结构,使用场景主要是作为一种数据传输格式来使用.它是二进制的,所以无论是发送请求还是接收请求都要用二进制格式,也就…
protocol buffers的使用示例 如果不了解protocol buffers,可以先参看:http://blog.csdn.net/zhu_xun/article/details/19343079 本例的protobuf的版本为2.5.0,运行环境为windows平台(当然,在Linux下使用的方法也一样,只不过是使用shell脚本驱动protobuf程序的运行) 下载protobuf运行环境包:可以到http://download.csdn.net/detail/u012875880…
Protocol Buffers学习笔记 1. 简介 Protocol Buffers是google发明的一种数据交换格式,独立于语言,独立于平台.与其他的数据交换格式有所不同,Protocol Buffers是一种二进制的格式,因此在网络传输的时候效率更高,相对于json它的文件体积更小,相对于xml,它的解析速度更快. 作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于网络传输.配置文件.数据存储等领域. 2. 在java中的使用 2.1 新建test.proto文件 syntax…
简介 现在我们Web API项目基本上都是使用的Json作为通信的格式,随着移动互联网的兴起,Web API不仅其他系统可以使用,手机端也可以使用,但是手机端也有相对特殊的地方,网络通信除了wifi,还有蜂窝网络比如2G/3G,当手机处于这种网络环境下并且在一些偏僻或者有建筑物阻挡的地方,网络会变得非常差,之前我有测试过ProtoBuf和Json在序列化和反序列化上性能的对比,通过测试发现ProtoBuf在序列化和反序列化以及序列化后字节的长度和其他的框架相比都有很大的优势,所以这篇文章准备让W…
ps: Protocol Buffers简称PB PB 安装配置 下载 PB: 在 PB 官网,下载最新版(或者其他版本)PB,这里为了与 Java 项目中的 PB Maven 依赖版本一致,使用 PB 2.5.0 版本. 安装 PB: 解压:tar zxvf protobuf-2.5.0.tar.gz,使用 cd 命令进入 protobuf-2.5.0 目录. ./configure,通常建议加上 --prefix 参数来指定目录,例如:./configure --prefix=/usr/lo…
Protocol Buffers(Protobuf)开发者指南---概览 欢迎来到protocol buffers的开发者指南文档,protocol buffers是一个与编程语言无关‘.系统平台无关.可扩展的结构化数据序列化/反序列化工具,适用于通讯协议,数据存储等场合. ps:为了方便拼写,下文的protobuf就是指protocol buffers. 本文档的面向读者是:希望使用protobuf的 Java.C++.Python的开发者.此概览将向您介绍如何开始使用protobuf,然后您…
安装 protoc (The protocol compiler)是由C++写的,支持的 C++.Java.Python.Objective-C.C#.JavaNano.JavaScript.Ruby.PHP 的实现都在 https://github.com/google/protobuf 这个项目中, 例外的是 Go 的实现是在 https://github.com/golang/protobuf 这里. 所以Go 支持 Protocol Buffers的安装需要下面三步: Install t…