PHPThrift-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

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: 定义对象的接口,和一系列措施

协议

 
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

相关文章