JavaThrift-java学习小结

更多技术干货请戳:听云博客

Thrift是什么样?什么境况下利用thrift

Thrift源于大名鼎鼎的facebook之手,在二零零七年facebook提交Apache基金会将Thrift作为一个开源项目,对于当下的facebook来说创设thrift是为领悟决facebook系统中各系统间大数据量的传导通信以及系统里头语言环境不同需要跨平台的特征。所以thrift可以匡助多种程序语言,例如:
 C++, C#, Cocoa, Erlang, Haskell, Java, Ocami, Perl, PHP, Python, Ruby,
Smalltalk.
在多种不同的语言之间通信thrift能够当做二进制的高性能的通讯中间件,援助数据(对象)体系化和多体系型的RPC服务。Thrift是IDL(interface
definition
language)描述性语言的一个现实贯彻,Thrift适用于程序对先后静态的数据互换,需要先确定好她的数据结构,他是完全静态化的,当数据结构爆发变化时,必须重新编写IDL文件,代码生成,再编译载入的流程,跟其它IDL工具相比可以视为是Thrift的缺点,Thrift适用于搭建大型数据交流及仓储的通用工具,对于大型系统中的子系统间数据传输绝对于JSON和xml无论在性质、传输大小上有彰着的优势。

Thrift
基础架构

Thrift是一个服务端和客户端的架构连串,就是socket传输,Thrift
具有自己内部定义的传导协议正式(TProtocol)和传输数据标准(TTransports),通过IDL脚本对传输数据的数据结构(struct)
和传输数据的业务逻辑(service)依据不同的周转条件快捷的构建相应的代码,并且经过祥和之中的系列化机制对传输的数据进行简化和压缩提升高并发、
大型系统中数据交互的血本,下图描绘了Thrift的完全架构,分为6个部分:1.您的业务逻辑实现(You
Code) 2.客户端和服务端对应的瑟维斯(Service) 3.履行读写操作的乘除结果4.TProtocol
5.TTransports  6.底层I/O通信

Thrift脚本的数据类型

 * Base
Types:基本项目

bool    
   Boolean, one byte

byte    
   Signed byte

Java,i16      
  Signed 16-bit integer

i32      
  Signed 32-bit integer

i64      
  Signed 64-bit integer

double  
   64-bit floating point value

string  
   String

binary  
   Blob (byte array)

 *
Struct:结构体类型

 *
Container:容器类型,即List、Set、Map

map<t1,t2>
Map from one type to another

list<t1>
   Ordered list of one type

set<t1>  
  Set of unique elements of one type

 *
Exception:分外类型

 *
Service(Service): 定义对象的接口,和一多级措施

协议

 
Thrift可以让您挑选客户端与服务端之间传输通信协议的连串,在传输协议上完全上划分为文本(text)和二进制(binary)传输协议,
为节约带宽,提供传输效用,一般情形下利用二进制类型的传输协议为大部分,但奇迹会依然会动用基于文本类型的合计,这亟需遵照项目/产品中的实际需求:

    *
TBinaryProtocol – 二进制编码格式进行多少传输。

    *
TCompactProtocol – 这种协议非凡实惠的,使用Variable-Length Quantity
(VLQ) 编码对数码举办压缩。

    *
TJSONProtocol – 使用JSON的数据编码协议举办多少传输。

    *
TSimpleJSONProtocol –
这种节约只提供JSON只写的协议,适用于经过脚本语言解析

    *
TDebugProtocol –
在付出的进程中帮助开发人士调试用的,以文件的花样突显方便阅读。

传输层

    *
TSocket- 使用堵塞式I/O举行传输,也是最常见的形式。

    *
TFramedTransport-
使用非阻塞格局,按块的轻重,进行传输,类似于Java中的NIO。

    *
TFileTransport-
顾名思义遵照文件的章程经过传输,即使这种措施不提供Java的贯彻,但是实现起来相当简单。

    *
TMemoryTransport-
使用内存I/O,就好比Java中的ByteArrayOutputStream实现。

    *
TZlibTransport- 使用举办zlib压缩,不提供Java的落实。

劳务端类型

    *
TSimpleServer –  单线程服务器端使用正式的堵塞式I/O。

    *
TThreadPoolServer –  多线程服务器端使用专业的堵塞式I/O。

    *
TNonblockingServer –
多线程服务器端使用非堵塞式I/O,并且实现了Java中的NIO通道。

Thrift构建步骤总结(参考实例1)

1
、下载thrift.exe

到thrift官网下载,那里自己用的是0.9.3本子

http://thrift.apache.org/

2、将exe放到C:\Windows下(重命名为thrift.exe)

3、C:\Windows创建.thrift文件,编写ThriftServer.thrift代码

4、在目录下举行thrift.exe
-r -gen java
./ThriftServer.thrift;执行成功后来看在该目录下生成了gen-java文件夹,在该公文夹中生成了IThriftServer.java;

5、将IThriftServer.java拷贝到server端,举办延续编写即可。

6、要是client和server端是跨应用,那么需要server端先编译打包成jar,将以此jar添加到client端的看重中。

 

初稿链接:http://blog.tingyun.com/web/article/detail/1083

相关文章