Thrift概述及安装

Thrift是一个支持可扩展的跨语言的远程服务调用框架。

 

Thrift采用接口描述语言来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(Java,C++,C#,PHP等),并由生成的代码负责RPC协议层(Protocol)和传输层(Transport)的实现。其中,协议层定义数据传输格式(比如二进制、XML、JSON等),传输层定义数据传输方式(比如TCP/IP传输、内存共享、文件共享等)。

 

Thrift是对IDL(Interface Definition Language) 描述性语言的一种具体实现。

 

在Thrift中,直接调用一个返回null值的方法会抛出TApplicationException异常。

 

Thrift可以通过代码生成工具将接口定义文件生成Java语言的服务端代码和C++语言的客户端代码,从而实现服务端和客户端跨语言的支持。

 

安装包下载: http://thrift.apache.org/download

开发包下载: http://repo1.maven.org/maven2/org/apache/thrift/libthrift/

 

在Windows下安装Thrift的步骤:

        在D盘下新建一个名为thrift的文件夹,将thrift-0.9.3.exe文件复制到该文件夹里,并重命名为thrift.exe

        配置Path环境变量,在变量最后面追加 ;D:\thrift 

        在DOS窗口中执行 thrift -version ,如果输出Thrift的版本号,则表示安装成功

 

生成目标语言代码:

        编写Hello.thrift接口描述文件

        将Hello.thrift文件复制到D:\thrift目录下

        执行命令 thrift --gen java Hello.thrift,将会生成Hello.java文件

Thrift通讯协议:

        TBinaryProtocol:二进制格式

        TCompactProtocol:压缩格式

        TJSONProtocol:JSON协议

        TSimpleJSONProtocol:提供JSON只写协议,适用于通过脚本语言解析

Thrift传输方式

        TSocket:使用阻塞式 I/O 进行传输,是最常见的模式

        TNonblockingTransport:使用非阻塞方式,用于构建异步客户端

        TFramedTransport:以frame为单位进行传输,非阻塞式服务中使用。同TBufferedTransport类似,也会对相关数据进行buffer,同时,它支持定长数据发送和接收。

        TFileTransport:文件(日志)传输类,允许client将文件传给server,允许server将收到的数据写到文件中

        THttpTransport:采用Http传输协议进行数据传输

        TZlibTransport:使用zlib进行压缩, 与其他传输方式联合使用

        TBufferedTransport:对某个Transport对象操作的数据进行buffer,即从buffer中读取数据进行传输,或者将数据直接写入buffer

        TMemoryTransport:将内存用于I/O. java实现时内部实际使用了简单的ByteArrayOutputStream

 Thrift服务端类型

        TSimpleServer: 阻塞式的单线程服务模型,常用于测试

        TThreadedServer :阻塞式的多线程服务模型,每个请求创建一个线程

        TNonblockingServer :非阻塞式的多线程服务模型(需使用TFramedTransport数据传输方式)

        TThreadPoolServer :阻塞式的线程池服务模型,预先创建一组线程处理请求

        THsHaServer:半同步半异步的服务模型(需使用TFramedTransport数据传输方式)

        TThreadedSelectorServer:

猜你喜欢

转载自chenjumin.iteye.com/blog/2339081