`

Thrift 和 Protocol Buffers 比较

阅读更多

 ThriftProtocol Buffers Backers Bindings Output Formats Primitive Types Enumerations Constants Composite Type Exception Type Documentation License Compiler Language RPC Interfaces RPC Implementation Composite Type Extensions
Facebook, Apache (accepted for incubation) Google
C++, Java, Python, PHP, XSD, Ruby, C#, Perl, Objective C, Erlang, Smalltalk, OCaml, and Haskell C++, Java, Python
(Perl, Ruby, and C# under discussion)
Binary, JSON Binary
bool
byte
16/32/64-bit integers

double
string
byte sequence
map<t1,t2>
list<t>
set<t>
bool

32/64-bit integers
float
double
string
byte sequence

“repeated” properties act like lists
Yes Yes
Yes No
struct message
Yes No
So-so Good
BSD-style Apache
C++ C++
Yes Yes
Yes No
No Yes

 

http://stuartsierra.com/2008/07/10/thrift-vs-protocol-buffers

 

Milliseconds to create an object, smaller is better. The Protobuf results is not a mistake! It was created by the builder pattern.

Milliseconds to serialize an object to a byte array, smaller is better.
Milliseconds to deserialize an object from byte array, smaller is better.
Size of the byte array of a serialized object, smaller is better.

 

http://eishay.blogspot.com/2008/11/serialization-protobuf-vs-thrift-vs.html

 

从比较可以看出来,Thrift是很不错的,只是,现在似乎在windows编译有点麻烦。

 

 

分享到:
评论

相关推荐

    benchmarks:Protocol Buffers 和 Thrift 的基准测试

    Protocol Buffers 和 Thrift 的基准。如何运行基准测试克隆存储库: $ git clone $ cd benchmarks $ git submodule init $ git submodule update 按照此处的说明安装 Thrift 的依赖项: 构建并运行基准测试: $ ...

    protobuf/thrift/avro-序列化性能测试工程

    protobuf(Protocol Buffers)、thrift和avro是三种广泛使用的序列化框架,它们在分布式系统、网络通信以及数据存储中扮演着重要角色。这个名为"protobuf/thrift/avro-序列化性能测试工程"的项目专注于对比这三种...

    THRIFT 学习资料

    这些定义存储在 `.thrift` 文件中,类似于协议缓冲区(Protocol Buffers)的 `.proto` 文件。服务定义包括服务名、方法名、输入参数和返回值。例如: ```thrift service MyService { string echo(1: string ...

    thrift-0.9.3

    然而,随着技术的发展,Thrift 面临着如 gRPC 等新型框架的竞争,后者基于 HTTP/2 和 Protocol Buffers,提供了更快的性能和更现代的特性。但无论如何,对于需要兼容旧有系统或者对 Thrift 有深厚依赖的项目来说,...

    DSNF代码生成啊啊

    2. **代码生成工具**:了解不同类型的代码生成工具,如Apache Thrift和Protocol Buffers,以及如何根据项目需求选择合适的工具。 3. **代码转换**:学习如何使用CALL转换器这样的工具,将代码从一种形式或语言转换为...

    Go-Bender一个用于创建负载测试应用程序易于使用的Go库

    Bender可以使用HTTP,Thrift,Protocol Buffers等协议轻松构建服务的负载测试应用程序。 Bender提供了一个灵活,强大的原语库,可以组合(使用普通的Go代码)来构建针对任何用例定制的负载测试器

    基于C++ Workflow的RPC框架设计与源码,支持SRPC、百度bRPC、腾讯tRPC及thrift协议

    该框架包含256个文件,涵盖83个头文件、69个源代码文件、29个Markdown文档、16个文本文件、13个Protocol Buffers定义文件、7个配置文件、6个C++头文件、4个Thrift定义文件、3个构建脚本文件及其他类型文件。...

    基于C#和Shell语言的Anno.Core微服务引擎设计源码

    总计包含311个文件,其中包括233个C#源文件、27个项目文件、17个批处理文件、9个配置文件、4个Shell脚本、4个文本文件、4个Thrift文件、3个可执行文件、2个Protocol Buffers文件和1个Git属性文件。Anno引擎支持grpc...

    Hadoop序列化机制

    Hadoop提供了两种主要的序列化框架:Writable和Protocol Buffers,以及更现代的Apache Avro、Thrift和Kryo。 1. Writable接口:这是Hadoop最初提供的序列化机制,适用于Java对象。所有可序列化的类都需要实现...

    Go-Turbo一个很”轻”的微服务工具把你的grpc|thrift接口变成HTTP接口

    gRPC基于HTTP/2协议,采用ProtoBuf(Protocol Buffers)作为序列化协议,提供高性能、类型安全且语言中立的远程过程调用(RPC)框架。Thrift则是Facebook开源的一个跨语言的、可扩展的软件栈,用于构建高并发、高...

    Apache Hadoop---Avro.docx

    在序列化系统的选择上,Avro 与 Google 的 Protocol Buffers 和 Facebook 的 Thrift 等系统有所不同。虽然这些系统在某些场景下表现出色,但它们各自存在一定的局限性。例如,Protocol Buffers 需要预先定义数据结构...

    fdbus源码下载,方便学习

    fdbus,全称为Fast Distributed Bus,是一个高性能、轻量级的跨平台进程间通信(IPC)框架,它基于C++实现,借鉴了Facebook的Thrift和Google的Protocol Buffers的设计思想。fdbus的核心目标是提供一种高效、灵活的...

    ASN1抽象语法详细教程讲解

    可能很多人没有听说过ASN.1, 但是相信有过跨平台编程经验的同学可能都听过protocol buffers和Apache Thrift,虽然ASN.1和上面两个语言相比不是那么出名,但是ASN.1的出现要比他们早的多,早在1984年ASN.1就出现了。...

    2015年阿里巴巴中间件比赛,实现rpc框架基本功能.zip

    2. **协议封装与解封**:RPC框架需要处理网络通信,通常会定义一套自己的协议,如Hessian、Thrift或Protocol Buffers。这些协议用于将方法调用和参数序列化为网络传输的数据,到达目标后进行反序列化恢复原貌。 3. ...

    代码自动生成和配置文件自动更改的工具

    还有代码生成器如Apache Thrift或Protocol Buffers,它们将定义的服务协议转换为多语言的客户端和服务端代码。 2. **配置文件自动更改**: 配置文件自动更改通常涉及到配置管理工具,它们允许开发者在不修改代码的...

    RPC调用框架比较分析

    1. Protobuf RPC(Protocol Buffers Remote Procedure Call) - **Protobuf** 是Google开发的一种数据序列化协议,可以将结构化数据序列化,可用于数据存储、通信协议等方面。 - **protobuf-2.5.0.tar.bz2** 是一...

    模板中转

    1. **代码生成**:在大型项目中,开发者可能会使用代码生成工具,如Apache Thrift、Protocol Buffers或Swagger,通过模板生成服务端和客户端的API代码,减少手动编写重复代码的时间。 2. **模版引擎**:比如...

    C#调用java直接调用无需生成.net组件

    Google的Protocol Buffers是一种高效的数据序列化协议,支持C#和Java等多种语言。通过定义.proto文件,可以生成跨语言的API,使C#能够直接与Java数据结构交互。 6. **桥接库**: 有些第三方库,如JNBridge,专门...

Global site tag (gtag.js) - Google Analytics