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);   // ⑤ 创建客户端桩
相关推荐
颜酱12 分钟前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者16 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮16 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者17 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考17 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx20 小时前
CART决策树基本原理
算法·机器学习
Wect21 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱1 天前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
Gorway1 天前
解析残差网络 (ResNet)
算法
拖拉斯旋风1 天前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法