Thrift 是一个轻量级、独立于措辞的软件堆栈,用于 点对点 RPC 实现。Thrift为数据传输供应了干净的抽象和实现, 数据序列化和运用程序级处理。代码天生 系统以大略的定义措辞为输入并天生代码 跨利用抽象堆栈构建的编程措辞 可互操作的 RPC 客户端和做事器。
Thrift支持多种不同的编程措辞,包括C++、Java、Python、PHP、Ruby等,本系列紧张讲述基于Java措辞的Thrift的配置办法和详细利用。
紧张分层
Thrift软件栈分层从下向上分别为:传输层(Transport Layer)、协议层(Protocol Layer)、处理层(Processor Layer)和做事层(Server Layer)。

传输层(Transport Layer):传输层卖力直接从网络中读取和写入数据,它定义了详细的网络传输协议;比如说TCP/IP传输等。协议层(Protocol Layer):协议层定义了数据传输格式,卖力网络传输数据的序列化和反序列化;比如说JSON、XML、二进制数据等。处理层(Processor Layer):处理层是由详细的IDL(接口描述措辞)天生的,封装了详细的底层网络传输和序列化办法,并委托给用户实现的Handler进行处理。做事层(Server Layer):整合上述组件,供应详细的网络线程/IO做事模型,形成终极的做事。Thrift的特性(一) 开拓速率快
通过编写RPC接口Thrift IDL文件,利用编译天生器自动天生做事端骨架(Skeletons)和客户端桩(Stubs)。从而省去开拓者自定义和掩护接口编解码、传输、做事器多线程模型等根本事情。
做事端:只须要按照做事骨架即接口,编写好详细的业务处理程序(Handler)即实现类即可。客户端:只须要拷贝IDL定义好的客户端桩和做事工具,然后就像调用本地工具的方法一样调用远端做事。
(二) 接口掩护大略通过掩护Thrift格式的IDL(接口描述措辞)文件(把稳写好注释),即可作为给Client利用的接口文档利用,也自动天生接口代码,始终保持代码和文档的同等性。且Thrift协议可灵巧支持接口的可扩展性。
(三) 学习本钱低由于其来自Google Protobuf开拓团队,以是其IDL文件风格类似Google Protobuf,且更加易读易懂;特殊是RPC做事接口的风格就像写一个面向工具的Class一样大略。初学者只需参照:thrift.apache.org/,一个多小时就可以理解Thrift IDL文件的语法利用。
(四) 多措辞/跨措辞支持Thrift支持C++、 Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk等多种措辞,即可天生上述措辞的做事器端和客户端程序。对付我们常常利用的Java、PHP、Python、C++支持良好,虽然对iOS环境的Objective-C(Cocoa)支持稍逊,但也完备知足我们的利用哀求。
谁在利用 ThriftThrift在很多开源项目中已经被验证是稳定和高效的,例如Cassandra、Hadoop、HBase等;国外在Facebook中有广泛利用,海内包括百度、美团小米、和饿了么等公司。