thrift 总结
一、协议相关
传输层 TTransport:传输层提供了一个简单的抽象,以用于从/向网络读/写。这使得Thrift能够将底层传输与系统的其他部分隔离(例如序列化/反序列化),thrift还提供ServerTransport来接收/创建原始传输对象。顾名思义,ServerTransport主要用于服务端,为传入连接创建新的传输对象。
- 类型:
TTransport:客户端传输层抽象基础类,read、write、flush、close 等方法
TSocket 与 TNonBlockingSocket:分别是基于 BIO 和 NIO 客户端传输类
TServerSocket 与 TNonBlockingServerSocket:分别是基于 BIO 和 NIO 服务端传输类
TZlibTransport:TSaslClientTransport 与 TSaslServerTransport:提供 SSL 校验 - 功能有:
open
close
write
read
flush
协议层 Protocol:协议抽象定义了一种将内存数据结构映射为wire-format的机制。换句话说,协议指定数据类型如何使用传输层来对自身编码/解码。所以说协议实现控制编码方案并负责(反)序列化。常用的几种协议:
TBinaryProtocol:二进制流传输协议类,把各类型转换成 byte 数组,交给 TTransport 传输
TCompactProtocol:使用 Variable-Length Quantity(VLQ)编码对数据进行压缩(压缩方法二进制协议类,将 Integer 按 ZigZag 压缩)
TTupleProtocol:继承自 TCompactProtocol,Struct 使用时更省空间
TJSONProtocol:JSON 格式协议类,将数据封装成 JSON 格式,再转成 byte 数组交给传输层
TSimpleJSONProtocol:JSON 格式协议类,但只支持写的功能
处理层 Processor:Thrift处理器封装了从输入流读取数据和写入输出流的功能。输入和输出流由Protocol对象表示。处理器的接口也很简单
TProcessor:基础接口,process(TProtocol in, TProtocol out)
TBaseProcessor:基础抽象类,持有 processMap 对象,key 为方法名,value 为方法
Processor:由声明的 IDL 生成,实现 TProcessor 接口并继承了 TBaseProcessor 类
TAsyncProcessor:异步处理接口
TBaseAsyncProcessor:异步处理抽象类
AsyncProcessor:由声明的 IDL 生成,实现 TAsyncProcessor 接口并继承 TAsyncProcessor 类
服务层 Server:
- 服务端的功能:
创建Transport
为Transport创建读/写协议
基于协议创建处理器
等待传入连接并将其转交给处理器 - 服务端的类型:
TServer:基础抽象类,类似一个容器,持有 TProcessor、TTransport、TProtocol 的工厂对象,提供 server() 方法,用于启动服务,stop() 用于停止服务
TSimpleServer:单线程阻塞式服务
TNonblockingServer:支持非阻塞单线程服务模型,基于 NIO 的 select 实现
TThreadPoolServer:专门的线程接受请求并交给线程池处理,阻塞式线程池模型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通