Thrift 简单介绍

从客户端视角看,Thrift 建立连接一共需要五个元素

① 服务器 IP
② 服务器 端口 Port
③ 传输方式 Transport
④ 编码协议 Protocol
⑤ 服务 Stub(接口类

1、传输方式 Transport 常见类型及区别

传输类 底层依赖 是否带消息边界 是否适合非阻塞 是否推荐 构造方式
TSocket TCP 只作基础 方式2
TBufferedTransport TCP 旧项目 方式2
TBufferedTransport TCP 强烈推荐 方式2
TZlibTransport TCP 用于压缩 方式2
THttpClient HTTP Web 场景 方式1

方式1:

cpp 复制代码
// ✅ 只有 HTTP 客户端是这样构造的
std::make_shared<THttpClient>(host, port);

方式2:

cpp 复制代码
// ✅ 其他所有 Transport 都必须这样构造
auto sock = std::make_shared<TSocket>(host, port);
auto trans = std::make_shared<XXXTransport>(sock);

2、编码协议 Protocol常见类型及区别

Protocol 决定数据变成网络字节时是:

  • 文本
  • 二进制
  • 压缩
  • 精简字段编号
Protocol 编码方式 是否二进制 速度 可读性 是否推荐
TBinaryProtocol 标准二进制
TCompactProtocol 压缩二进制 更快 ✅✅✅
TJSONProtocol JSON 文本 只适合调试
TSimpleJSONProtocol 简化 JSON 已很少用
TDebugProtocol 调试输出 只用于日志

构造方式:

cpp 复制代码
proto_ = std::make_shared<具体Protocol类型>(trans_);

3、连接

此时已经配置好了传输方式 Transport编码协议 Protocol,那么就可以连接服务端了。

cpp 复制代码
auto sock  = std::make_shared<TSocket>(ip, port);        // ① 创建 TCP socket
auto trans = std::make_shared<TFramedTransport>(sock);   // ② 绑定传输层
auto proto = std::make_shared<TCompactProtocol>(trans); // ③ 绑定协议层

trans->open();                                          // ✅ ④ 真正建立 TCP 连接
client = std::make_shared<SampleRegLCClient>(proto);   // ⑤ 创建客户端桩
相关推荐
小O的算法实验室4 分钟前
2023年CIE SCI2区TOP,ACO+PSO+A*:一种用于 AUV 多任务路径规划的双层混合算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
Ro Jace8 分钟前
A Real-Time Cross Correlator for Neurophysiological Research
人工智能·python·算法
Sheep Shaun22 分钟前
深入理解红黑树:从概念到完整C++实现详解
java·开发语言·数据结构·c++·b树·算法
Dave.B23 分钟前
:vtkBooleanOperationPolyDataFilter 布尔运算全解析
算法·vtk
易晨 微盛·企微管家28 分钟前
2025企业微信AI智能机器人实战指南:3步实现客服自动化
大数据·人工智能·算法
jiaguangqingpanda29 分钟前
Day26-20260122
java·算法·排序算法
secondyoung35 分钟前
队列原理与实现全解析
c语言·数据库·mysql·算法·队列
kuiini36 分钟前
scikit-learn 常用算法与评估方法【Plan 7】
python·算法·scikit-learn
旭意39 分钟前
数据结构-红黑树和set
数据结构·c++·算法·蓝桥杯
宵时待雨39 分钟前
数据结构(初阶)笔记归纳7:链表OJ
c语言·开发语言·数据结构·笔记·算法·链表