服务端
+-------------------------------------------+
| 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:处理请求,具体的实现由生成的代码处理,定义接口是
TProcessorTBaseProcessor:同步处理的 ProcessorTBaseAsyncProcessor:异步处理的 ProcessorTMultiplexedProcessor:支持多个服务的同步 Processor
Protocol:请求协议,数据的编解码实现,定义接口是
TProtocolTBinaryProtocol:二进制协议TCompactProtocol:压缩协议TJSONProtocol:JSON 格式协议TMultiplexedProtocol:支持多个 Processor 的封装协议,依赖于其他协议
Transport:底层的连接,提供了读写的抽象实现;服务端定义是
TServerTransportTServerSocket: 基于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:请求协议,数据的编解码实现,定义接口是
TProtocolTBinaryProtocol:二进制协议TCompactProtocol:压缩协议TJSONProtocol:JSON 格式协议TMultiplexedProtocol:支持多个 Processor 的封装协议,依赖于其他协议
Transport:底层的连接,提供了读写的抽象实现;客户端的定义是
TTransportTFileTransport: 读写文件的 TranportTHttpClient:基于HttpClient的 TransportTNonblockingSocket:基于SocketChannel的 TransportTSocket: 基于Socket的 TranportTSaslClientTransport: 支持 SASL 鉴权认证的 TranportTZlibTransport:支持压缩的 TransportTSaslTransport:支持 SSL 加密的 Transport