Thrfit 中的核心概念
服务端
1 | +-------------------------------------------+ |
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
客户端
1 | +-------------------------------------------+ |
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