Thrift 是 什 么 ?Thrift源于大名鼎鼎的 facebook之手,在 2007年 facebook提交 Apache基金会将 Thrift作为一个开源项目,对于当时的 facebook来说创造 thrift是 为了解决facebook系统中各系统间大数据量的传 输通信以及系统之间语言环境不同需要跨平台的特性。所以 thrift可以支持多种程序语言,例如:C++,C#,Cocoa,Erlang,Haskell,Java,Ocami,Perl,PHP,Python,Ruby,Smalltalk.在多种不同的语言之间通信 thrift可以作为二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。Thrift适用于程序对程 序静态的数据交换,需要先确定好他的数据结构,他是 完全静态化的,当数据结构发生变化时,必须重新编辑 IDL文件,代码生成,再编译载入的流程,跟其他 IDL工具相比较可以视为是 Thrift的弱项,Thrift适用于搭建大型数据交换及存储的通用工具,对于大型系统中的内部数据传输相对于 JSON和 xml无论在性能、传输大小上有明显的优势。Thrift是 IDL(interfacedefinitionlanguage)描述性语言的一个具体实现,关于IDL的话题我们可以追溯到 CORBA盛行 1999-2001年(CommonObjectRequestBrokerArchitecture/公用对象请求代理体系结构),在 IDL中我们似乎不会忘记到这几个关键字:module、interface、string、long和 int,我还记得IDL利用 module来创建名称空间,并且准确地映射为 Java的 package,这些特性几乎和现在thrift的特性完全相同,所以 thrift的设计思想和理念绝不是 什 么 从火星来的 newidea,看看在那个 CORBA盛行的年代人们提出的概念,如图所示 CORBA请求的各个部分,回头我们再与 thrift进行对比一下:Thrift 基础架构Thrift是一个服务端和客户端的架构体系,从我个人的感官上来看 Thrift是一个类似XML-RPC+Java-to-IDL+SerializationTools=Thrift的东东,Thrift 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports),通过 IDL脚本对传输数据的数据结构(struct)和传输数据的业务逻辑(service)根据不同的运行环境快速的构建相应的代码,并且通过自己内部的序列化机制对传输的数据进行简化和压缩提高高并发、 大型系统中数据交互的成本,下图描绘了 Thrift的整体架构,分为 6个部分:1.你的业务逻辑实现(YouCode)2.客户端和服务端对应的Service3.执行读写操作的计算结果 4.TProtocol5.TTransports6.底层I/O通信图 中前面 3个部分是 1.你通过Thrift脚本文...