服务端
+-------------------------------------------+
| Server |
| (single-threaded, event-driven etc) |
+-------------------------------------------+
| Processor |
| (compiler generated) |
+-------------------------------------------+
| Protocol |
| (JSON, compact etc) |
+-------------------------------------------+
| Transport |
| (raw TCP, HTTP etc) |
+-------------------------------------------+
Thrift Server 设计大致可以分为四层,分别是:
Server:负责连接调度、服务的生命周期,定义接口是
TServer
-TSimpleServer
:简单的阻塞服务端 -TThreadPoolServer
:使用线程池的处理请求的阻塞服务端 -THsHaServer
:使用线程池处理请求的基于 NIO 的非阻塞服务端 -TThreadedSelectorServer
:使用多种线程池的基于 NIO 的非阻塞服务端Processor:处理请求,具体的实现由生成的代码处理,定义接口是
TProcessor
TBaseProcessor
:同步处理的 ProcessorTBaseAsyncProcessor
:异步处理的 ProcessorTMultiplexedProcessor
:支持多个服务的同步 Processor
Protocol:请求协议,数据的编解码实现,定义接口是
TProtocol
TBinaryProtocol
:二进制协议TCompactProtocol
:压缩协议TJSONProtocol
:JSON 格式协议TMultiplexedProtocol
:支持多个 Processor 的封装协议,依赖于其他协议
Transport:底层的连接,提供了读写的抽象实现;服务端定义是
TServerTransport
TServerSocket
: 基于ServerSocket
的服务端 TransportTNonblockingServerSocket
:基于ServerSocketChannel
的服务端 TransportTSaslTransport
:支持 SSL 加密的 Transport
客户端
+-------------------------------------------+
| Client |
| (sync or async generated) |
+-------------------------------------------+
| Protocol |
| (JSON, compact etc) |
+-------------------------------------------+
| Transport |
| (raw TCP, HTTP etc) |
+-------------------------------------------+
Thrift Client 设计分为三层,分别是:
Client:客户端,用于发起请求,接收响应 -
TServiceClient
:同步调用的客户端 -TAsyncClient
:异步调用的客户端Protocol:请求协议,数据的编解码实现,定义接口是
TProtocol
TBinaryProtocol
:二进制协议TCompactProtocol
:压缩协议TJSONProtocol
:JSON 格式协议TMultiplexedProtocol
:支持多个 Processor 的封装协议,依赖于其他协议
Transport:底层的连接,提供了读写的抽象实现;客户端的定义是
TTransport
TFileTransport
: 读写文件的 TranportTHttpClient
:基于HttpClient
的 TransportTNonblockingSocket
:基于SocketChannel
的 TransportTSocket
: 基于Socket
的 TranportTSaslClientTransport
: 支持 SASL 鉴权认证的 TranportTZlibTransport
:支持压缩的 TransportTSaslTransport
:支持 SSL 加密的 Transport