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
分享到:
相关推荐
thrift是为了解决facebook系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性。thrift服务支持多种程序语言。比webservice简单方便。thrift集成spring。thrift集成连接池。使通信服务更简单...
一种基于Thrift的跨平台单点登录实现方法_韩冰.pdf
facelog 是一个用于人脸识别验证的跨平台跨语言的开发框架,其核心是一个基于 thrift 技术的 RPC 服务,为人脸识别应用提供数据管理、安全认证、前端设备管理、数据下发等基本核心的服务。facelog 只是一个针对人脸...
一般情况下的跨机器的通信框架都是跨软件平台的(Linux,windows), 而Thrift最特别之处在于它是跨语言的:你可以用几乎所有流行语言(C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript...
Thrift是什么?什么情况下使用thrift Thrift 基础架构 Thrift脚本的数据类型,协议,传输层 Thrift运用实例
Thrift源于大名鼎鼎的facebook之手,实现了跨平台的数据传递,这个是thrift的下载文件。
人脸识别验证的跨平台跨语言的应用服务开发框架,本项目并不涉及具体的人脸识别算法相关技术,只是为人脸识别算法在身份验证应用场景下的应用提供一个方便、简单的快速开发框架。让应用开发者只需要专注业务逻辑,而...
在2007年facebook提交Apache基金会将Thrift作为一个开源项目,对于当时的facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性。
obs-thrift-api OBS插件,用于将Web应用程序与OBS集成。 插件通过跨语言服务开发框架公开了某些OBS功能。 当前支持的功能: 将媒体源添加到OBS场景 从OBS删除媒体源 静音/取消静音源 有关完整的API详细信息,请...
可能很多人没有听说过ASN.1, 但是相信有过跨平台编程经验的同学可能都听过protocol buffers和Apache Thrift,虽然ASN.1和上面两个语言相比不是那么出名,但是ASN.1的出现要比他们早的多,早在1984年ASN.1就出现了。...
App Metrics是一个开源和跨平台的.NET库,用于在应用程序中记录和报告指标,并报告其健康状况。 开源的移动分析应用Countly572 Countly 是一个实时的、开源的移动分析应用,通过收集来自手机的数据...
跨平台、跨语言 可扩展性: 是否支持自动加入新的字段 性能: 空间开销(序列化大小)、时间开销(序列化/反序列化时间) 序列化协议: stream、xml、json、thrift、protobuf 序列化实现: java-built-in、hessian、fastjson...
是一个开源、跨平台的工具系列,旨在构建、测试和打包软件。 CMake 用于使用简单的平台和编译器独立配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机 makefile 和工作区。 CMake 工具套件由 ...
我们喜欢使用久经考验的跨平台序列化库,因为我们讨厌重新发明轮子。 Avro 适用于批量数据和长期存储,Protobuf 适用于网络,JSON 无处不在,Jackson 是其在 javaland 中事实上的默认解析器。 节俭也存在。 Anoa 将...
是一个免费的、跨平台的、开源的开发者平台,旨在构建多种不同类型的应用程序。 使用 .NET,您可以使用多种语言、编辑器和库来构建 Web、移动、桌面、游戏和 IoT。 Apache Thrift 软件框架旨在开发可扩展的跨语言...
是一个免费的、跨平台的、开源的开发者平台,旨在构建多种不同类型的应用程序。 使用 .NET,您可以使用多种语言、编辑器和库来构建 Web、移动、桌面、游戏和 IoT。 Apache Thrift 软件框架旨在开发可扩展的跨语言...
跟语言平台绑定的开源RPC框架主要有下面几种。Dubbo:国内最早开源的RPC框架,由阿里巴巴公司开发并于2011年末对外开源,仅支持Java语言。...Thrift:最初是由Facebook开发的内部系统跨语言的RPC框架,2007