thrift 是什么?
Thrift is a software framework for scalable cross-language services development. It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml.
thrift 支持现有现在的主流语言,由facebook开源出来的一个跨平台的通信工具。
thrift更多信息(建议看官网wiki)
可以参考thrift官方wiki:http://wiki.apache.org/thrift/
thrift基础学习:http://dongxicheng.org/search-engine/thrift-guide/
在thrift官方wiki中我们可以找到自己想要的东东,thrift IDL 、代码生成,client端开发,server端 开发等等
附件中附带thrift代码生成工具,具体使用 可以 使用 thrift-0.6.1.exe --help 查看帮助,如 简单的生成java代码命令:
thrift -r --gen java tutorial.thrift
thrift bug
在使用thrift进行跨平台数据通信时会遇到一些问题,在此总结一下几条望大家注意:
1.跨语言数据通信反序列化失败
java,c++ 使用thrift进行通信时,如果我们在java和c++平台之间传输的是 一个class序列化后的字符串(使用thrift的序列化api),如c++作为服务器端,java作为客户端,使用java接收c++传过来的class序列化字符串后,java将字符串反序列化,会出现反序列化失败的情况,但命名接收到了字符串,这时请在c++端将序列化后的字符串进行BASE64编码,java接收到base64编码的字符串后,将其base64字符串反编码形成的char数组进行thrift反序列化到class中即可解决跨语言的数据通信问题
2.thrift使用过程中的通信异常
在thrift通信过程中,如频繁报类似:“Cannot read. Remote side
has closed. Tried to read 1 bytes, but only got 0 bytes”的错误,很有可能是由于thrift版本导致到,无论是客户端还是服务器端请使用最高版本的thrift。这个bug在官网有记录:https://issues.apache.org/jira/browse/THRIFT-517
分享到:
相关推荐
在实际开发中,结合 Apache Thrift 和 Spring Data Couchbase,开发者可以创建一个高性能、跨平台的微服务架构,其中后端服务通过 Thrift 接口提供服务,而 Spring Data Couchbase 则负责在 Couchbase 数据库上进行...
Thrift的主要优点是它的可扩展性和灵活性,它可以跨越多种编程语言和平台,包括C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk等。通过Thrift,开发人员可以轻松地创建分布式系统,...
而 Thrift 是一个跨语言的服务开发框架,它定义了一种强类型、二进制编码的接口定义语言(IDL),用于构建可扩展的跨平台服务。 描述 "bildungsroman.zip,scala的com.timgroup.bildungsromanarrative" 暗示了这个...
它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一...
《Thrift下的Node.js跨语言异构:阿里云实践与UC浏览器内核团队分享》 在阿里云的技术实践中,Node.js跨语言异构是解决复杂系统集成和优化的关键技术之一。Thrift,作为Facebook在2007年开发并后来进入Apache开源...
通过使用 Thrift,开发者可以定义服务接口,然后在不同的语言环境中实现这些接口,实现跨平台、跨语言的通信。例如,你可以在服务器端用C++编写服务,客户端则可以使用Python或Java进行调用,而这一切都由Thrift自动...
它的主要目标是解决系统间的大数据量通信问题,同时支持多语言环境下的跨平台通信。Thrift支持诸如C++、Java、Python、PHP等众多编程语言,提供了高效的数据序列化和RPC(远程过程调用)服务。 Thrift的基础架构...
"talool-thrift-api" 提供的是Talool服务的API接口,封装成了WAR(Web Application Archive)文件,这表明它是为Web应用设计的。 1. **Thrift API**: Thrift API允许开发者定义服务接口和服务数据类型,然后自动...
标题中的"thrift-0.9.1.exe"和"thrift-0.9.2.exe"是Thrift框架的不同版本。这些文件是Windows平台上的可执行程序,用于生成与Thrift相关的代码。0.9.1和0.9.2分别代表了Thrift的两个发行版本,每个版本可能包含了新...
标题中的"IF4031-Thrift-IRC"可能指的是一个项目或课程代码,其中"IF4031"可能是项目或课程的编号,而"Thrift"和"IRC"则是该项目涉及的...同时,熟悉Thrift这样的工具对于构建跨语言、跨平台的服务具有很高的实用价值。
由于Thrift支持多种编程语言,这个购物车服务可以很容易地扩展到其他平台,如Python、C++或Go。 通过深入理解Thrift的工作原理和如何在Java项目中使用它,我们可以构建高性能、可扩展的分布式系统。这个"Shopping-...
Thrift 的优势在于它的高效、轻量级和易于集成,使得不同语言和平台之间的通信变得简单。 SASL 是一种标准化的接口,用于在网络协议中添加认证和加密功能。它提供了一种灵活的方式,使各种网络协议(如SMTP、IMAP、...
5. **跨平台通信**:可能涉及如何在Web应用中使用Thrift JSClient与后端服务(可能是Java、Python或其他语言)进行通信。 6. **示例代码**:通常会提供实际的JavaScript代码片段,展示如何创建Thrift客户端对象,...
它被设计用来高效地构建分布式系统中的可扩展且可维护的跨平台接口。Thrift通过定义一种中间表示(IDL,Interface Description Language)来描述服务,允许开发者在不同的编程语言之间轻松地进行数据序列化和远程...
这些定义可以被Thrift编译器转换为不同目标语言的代码,如Python、Java、C++等,这样你就可以在各种语言环境中使用相同的API来实现跨平台的通信。 Thrift的二进制通讯协议则优化了数据在网络中的传输效率。与传统的...
Thrift与Delphi的结合,使得开发者可以用Delphi编写高效的服务器和客户端程序,轻松实现跨平台的通信。 在"thrift-delphi"这个实例中,我们将深入探讨如何在Delphi环境下使用Thrift。首先,我们需要理解Thrift的IDL...
6. **多语言支持**:Thrift的一大优点是支持多种编程语言,这意味着你可以用Python编写服务端,而客户端可以使用Java、C++、Go等其他语言,实现了跨平台的通信。 7. **异步编程**:Thrift支持异步编程模型,允许你...
总之,"Thrift-0.5.exe"是Thrift在Windows平台上的安装程序,它包含了Thrift框架的早期版本,可用于构建跨语言的分布式服务。通过使用Thrift,开发者可以轻松地创建高效、可靠的分布式应用程序。
【标题】"thrift-parser_2.9.1-2.0.0-M2.zip" 涉及到的是一个关于 Thrift 解析器的版本更新,2.9.1 到 2.0.0-M2。Thrift 是一个开源的软件框架,由Facebook开发,用于构建可伸缩的服务。它允许定义数据类型和服务...