Thrift 协议栈

Thrift 协议栈

为了更好地理解Thrift的协议栈,推荐阅读Thrift的白皮书,以及Thrift Architecture阐述。 接下来的部分内容,直接来自于上述文档,下面将做简要地叙述Thrift Architecture

Runtime Library

协议层(Protocol)和传输层(Transport)是Runtime Library的一部分,这就意味着可能在定义Thrift service时,改变protocol和transport是不需要重新编写代码的。

Protocol 层

协议(Protocol)层提供了序列化和反序列化。Thrift提供了以下协议:

  • TBinaryProtocol: 一种直接转成二进制的协议,而不是转成文本
  • TCompactProtocol: 非常高效地,密集地转换数据的协议
  • TDenseProtocol: 和TCompactProtocol相似, 但是它传输的数据里剥离了元信息,而在接收端加上了。TDenseProtocol目前还在测试阶段,java实现尚不可用。
  • TJSONProtocol: 使用JSON转换数据。
  • TSimpleJSONProtocol: 一种只用于写的协议,使用JSON转换数据。非常适合脚本语言去解析
  • TDebugProtocol: 数据转换成可以直接阅读的文本,以用来帮助debug

Tranport 层

传输(Transport)层是负责读写传输的。Thrift支持以下几种:

  • TSocket: 使用阻塞式socket I/O.
  • TFramedTransport: 以帧来计量传输,每帧前携带数据长度。这种传输需要使用非阻塞server。
  • TFileTransport: 以文件来计量传输,但是这种Transport不支持Java。
  • TMemoryTransport: 以内存作为I/O. Java的实现则是在内部使用ByteArrayOutputStream。
  • TZlibTransport: 传输执行时使用 zlib压缩,使用时需要结合其他传输一同使用。Java不支持。

Processor

The processor takes as arguments an input and an output protocol. Reads data from the input, processes the data throught the Handler specified by the user and then writes the data to the output.

Supported Servers

A server will be listening for connections to a port and will send the data it receives to the Processor to handle.

  • TSimpleServer: A single-threaded server using std blocking io. Useful for testing.
  • TThreadPoolServer: A multi-threaded server using std blocking io.
  • TNonblockingServer: A multi-threaded server using non-blocking io (Java implementation uses NIO channels). TFramedTransport must be used with this server.

转载于:https://my.oschina.net/zyqjustin/blog/727361

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值