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);   // ⑤ 创建客户端桩
相关推荐
another heaven3 分钟前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark4 分钟前
从算法设计模式看编程思维的抽象能力4
算法
2601_9622186122 分钟前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
mikuyyds1 小时前
geo-toolbox 水文插件算法解析:从 Muskingum 到 Muskingum-Cunge
算法·rust·gis
Omics Pro1 小时前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
代数狂人1 小时前
机器学习数学基础──从零开始 导读
人工智能·算法
Zane19942 小时前
暴力字符串匹配失配就要把文本指针往回拉,KMP凭什么能让它一直往前走
算法
Tim_103 小时前
【LeetCode】338、比特位计数
c++·算法·leetcode
木子算法3 小时前
不是重心也不是中点:费马—韦伯点、它的最优性条件与迭代求解
人工智能·算法·目标跟踪
tryxr4 小时前
矩阵的几种基础变换
java·数据结构·算法·矩阵