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);   // ⑤ 创建客户端桩
相关推荐
rainbow6889几秒前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法
wangjialelele34 分钟前
平衡二叉搜索树:AVL树和红黑树
java·c语言·开发语言·数据结构·c++·算法·深度优先
驱动探索者1 小时前
linux mailbox 学习
linux·学习·算法
ringking1231 小时前
autoware-1:安装环境cuda/cudnn/tensorRT库函数的判断
人工智能·算法·机器学习
大闲在人1 小时前
8. 供应链与制造过程术语:产能
算法·制造·供应链管理·智能制造·工业工程
一只小小的芙厨2 小时前
寒假集训笔记·以点为对象的树形DP
c++·算法
历程里程碑2 小时前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado
执风挽^2 小时前
Python基础编程题2
开发语言·python·算法·visual studio code
Z9fish2 小时前
sse哈工大C语言编程练习20
c语言·开发语言·算法
晓13132 小时前
第六章 【C语言篇:结构体&位运算】 结构体、位运算全面解析
c语言·算法