Thrift 源码学习一——源码结构
Thrift 客户端与服务端的交互图
源码结构
-
传输层 TTransport:
-
TTransport:客户端传输层抽象基础类,read、write、flush、close 等方法
-
TSocket 与 TNonBlockingSocket:分别是基于 BIO 和 NIO 客户端传输类
-
TServerSocket 与 TNonBlockingServerSocket:分别是基于 BIO 和 NIO 服务端传输类
-
TZlibTransport:
-
TSaslClientTransport 与 TSaslServerTransport:提供 SSL 校验
-
-
协议层 Protocol:
-
TBinaryProtocol:二进制流传输协议类,把各类型转换成 byte 数组,交给 TTransport 传输
-
TCompactProtocol:使用 Variable-Length Quantity(VLQ)编码对数据进行压缩(压缩方法二进制协议类,将 Integer 按 ZigZag 压缩)
-
TTupleProtocol:继承自 TCompactProtocol,Struct 使用时更省空间
-
TJSONProtocol:JSON 格式协议类,将数据封装成 JSON 格式,再转成 byte 数组交给传输层
-
TSimpleJSONProtocol:JSON 格式协议类,但只支持写的功能
-
-
处理层 Processor:
-
TProcessor:基础接口,process(TProtocol in, TProtocol out)
-
TBaseProcessor:基础抽象类,持有 processMap 对象,key 为方法名,value 为方法
-
Processor:由声明的 IDL 生成,实现 TProcessor 接口并继承了 TBaseProcessor 类
-
TAsyncProcessor:异步处理接口
-
TBaseAsyncProcessor:异步处理抽象类
-
AsyncProcessor:由声明的 IDL 生成,实现 TAsyncProcessor 接口并继承 TAsyncProcessor 类
-
-
服务层 Server:
-
TServer:基础抽象类,类似一个容器,持有 TProcessor、TTransport、TProtocol 的工厂对象,提供 server() 方法,用于启动服务,stop() 用于停止服务
-
TSimpleServer:单线程阻塞式服务
-
TNonblockingServer:支持非阻塞单线程服务模型,基于 NIO 的 select 实现
-
TThreadPoolServer:专门的线程接受请求并交给线程池处理,阻塞式线程池模型
-