thrift

基本类型

bool :布尔类型( true or value),占一个字节

byte:有符号字节

i16:16位有符号整型

i32:32位有符号整型

i64:64位有符号整型

double :64位浮点数

string:未知编码或者二进制的字符串

注意,thrift不支持无符号整型,因为很多目标语言不存在无符号整型(如java)。

支持的传输协议

    * 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通道

 TransportTransport层提供了一个简单的网络读写抽象层。这使得thrift底层的transport从系统其它部分(如:序列化/反序列化)解耦。


规范的struct定义中的每个域均会使用required或者optional关键字进行标识。如果required标识的域没有赋值,Thrift将给予提示;如果optional标识的域没有赋值,该域将不会被序列化传输;如果某个optional标识域有缺省值而用户没有新赋值,则该域的值一直为缺省值;如果某个optional标识域有缺省值或者用户已经重新赋值,而不设置它的__isset为true,也不会被序列化传输。

你可能感兴趣的:(thrift)