一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一,总体看来ProtoBuf的优势还是很明显的
protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,详情访问protobuf的google官方网站
protobuf在google中是一个比较核心的基础库,作为分布式运算涉及到大量的不同业务消息的传递,如何高效简洁的表示、操作这些业务消息在google这样的大规模应用中是至关重要的。而protobuf这样的库正好是在效率、数据大小、易用性之间取得了很好的平衡。
protobuf简单总结如下几点:
- 灵活(方便接口更新)、高效(效率经过google的优化,传输效率比普通的XML等高很多);
- 易于使用;开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持java、c++、python等语言环境。通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。
- 多语言支持;原生支持c++,java,python
个人总结的适用protobuf的场合:
- 需要和其它系统做消息交换的,对消息大小很敏感的。那么protobuf适合了,它语言无关,消息空间相对xml和json等节省很多。
- 小数据的场合。如果你是大数据,用它并不适合。
- 项目语言是c++,java,python的,因为它们可以使用google的源生类库,序列化和反序列化的效率非常高。其它的语言需要第三方或者自己写,序列化和反序列化的效率不保证。
- 总体而言,protobuf还是非常好用的,被很多开源系统用于数据通信的工具,在google也是核心的基础库。
此外,还有更牛叉的facebook的thrift,2007年由Facebook开发,之后在2008年加到Apache计划中。是一个跨语言的轻量级RPC消息和数据交换框架,Thrift能生成的语言有: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml,这是它的一大优点。
分享到:
相关推荐
标题中的“实现protobuf与json的互转”是指在软件开发中,如何将使用Protocol Buffers(protobuf)编写的结构体数据转换成JSON格式,反之亦然。Protocol Buffers是Google推出的一种数据序列化协议,而JSON...
与XML和JSON相比,protobuf具有更高的压缩效率和传输速度,同时占用更少的内存。 本主题关注的是在Python3环境中如何实现protobuf和JSON之间的互相转换。首先,我们需要安装`protobuf`库,可以通过pip进行安装: `...
[libprotobuf ERROR external/com_google_protobuf/src/google/protobuf/descriptor_database.cc:393] Invalid file descriptor data passed to EncodedDescriptorDatabase::Add(). [libprotobuf FATAL external/...
google proto-buf中常被使用的一个计时文件,可能你的proto文件需要使用
这个名为"protobuf/thrift/avro-序列化性能测试工程"的项目专注于对比这三种技术的性能。 protobuf是Google开发的一种高效的数据序列化协议,它提供了简洁、快速和跨平台的序列化方法。protobuf通过定义.proto文件...
Protocol Buffers是Google开发的一种高效的数据序列化协议,常用于结构化数据的存储和通信,而JSON则是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 在描述中提到“原版中存在bug,...
#include <google/protobuf/stubs/common.h> namespace google { namespace protobuf { // Defined in this file. class Service; class RpcController; class RpcChannel; // Defined in other files. class ...
本资源提供了一个基于protobuf反射特性的pb结构与json相互转换的实例,该实例程序主要有两个核心函数myMessage2Json、myJson2Message。前者的作用是将pb结构转换成对应的json,后者是将json转换成对应的pb结构体。...
由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件...
path: google/protobuf/timestamp.proto 在 timestamppb 中 Timestamp 包含两个字段 seconds 表示秒 nanos 表示纳秒 message Timestamp { int64 seconds = 1; int32 nanos = 2; } timestamp.go path: github....
对于使用ProtoBuf定义数据但将JSON用作“ wire”格式的人们很有用。 受到“重大影响”。安装注意:此工具需要安装Go 1.11+。 使用Go安装此插件: GO111MODULE=on \go get github....
这不仅有助于开发者在跨平台上实现高效的数据交换格式,也为基于 Android 的应用程序提供了强大的序列化和反序列化功能。此外,深入理解构建过程中的各项配置和参数,对于提高编译效率以及解决可能出现的问题都非常...
protobuf-jsonschema 将编译为定义。 用法 您可以将protobuf-jsonschema用作命令行工具,或用作node中的函数。 CLI可以输出JSON或YAML(例如,用于Swagger)。 如果您指定一个protobuf消息名称以及一个文件,它将...
protobuf的全称是Protocol Buffers,它是一种语言无关、平台无关、可扩展的结构化数据序列化机制,类似于XML,但更小、更快、更简单。 首先,让我们深入了解一下protobuf的核心概念: 1. **定义消息类型**: 使用...
在IT行业中,数据交换和序列化是一个关键环节,protobuf(Protocol Buffers)和JSON都是广泛使用的数据表示格式。protobuf是由Google开发的一种高效、结构化的数据序列化协议,而JSON则是一种轻量级的文本数据交换...
在IT行业中,数据序列化和反序列化是一个关键任务,用于在不同的系统间交换数据。本文将深入探讨JavaScript中protobuf(Protocol Buffers)和JSON两种编码方式,并通过一个简单的示例来比较它们。标题“protojson:...
protobuf是Protocol Buffers的简称,它是Google开发的一种数据序列化协议,用于结构化数据的序列化,类似于XML、JSON,但更加高效且体积更小。它允许开发者定义数据结构,然后生成相应的代码,使得应用程序可以方便...
- **高效**:protobuf序列化的数据比XML或JSON更小,传输和存储效率更高。 - **易用**:protobuf提供了简单的API,使得数据的序列化和反序列化操作非常直观。 - **兼容性**:protobuf支持版本控制,新的数据结构可以...
ProtoBuf是由Google开发的一种高效的数据交换的序列化协议,而JSON则是一种轻量级的数据交换格式,广泛应用于Web服务和数据存储。 1. **ProtoBuf(Protocol Buffers)**: - ProtoBuf是一种二进制数据表示格式,它...
6. **集成到项目**: 将生成的源码添加到项目中,就可以在项目中使用protobuf进行数据交换。 在TensorFlow的编译过程中,用户需要确保protobuf已经正确安装并且版本匹配,因为TensorFlow可能对protobuf有特定版本的...