一个跨平台序列化库,无需先解析或解包即可直接读取二进制数据。
- Star
- 10,958
- Fork
- 4,116
- 未关闭 Issue
- 29
- 最近提交
- 18小时前
这是什么?
Apache Thrift 是一个轻量级的软件栈,用于点对点的远程过程调用(RPC)。它提供数据传输、数据序列化和应用层处理的抽象与实现,并附带代码生成器:输入简单的接口定义语言,即可为多种语言生成互通的客户端和服务端代码。
Thrift 支持 28 种编程语言,不同语言编写的服务可以交换数据并相互调用。它允许客户端和服务端非原子地升级版本:服务端升级后仍能服务旧客户端,新客户端也能请求旧服务端,便于 API 的版本演进。
编译器用 C++ 实现,仓库包含各语言的运行库、测试套件(含跨语言测试)和教程。构建可使用 Autotools 或 Docker。
核心功能
- 01根据简单的定义语言生成客户端与服务端代码
- 02支持 28 种编程语言
- 03可替换的数据传输与序列化层
- 04支持版本非原子升级时的兼容性
- 05自带跨语言测试套件
适用场景
- 构建由不同语言编写、需要相互调用的微服务
- 对外提供稳定的 RPC 接口,并在升级期间兼容旧客户端
- 在 C++ 后端与其他语言客户端之间共享数据结构
快速上手
- 1
生成 configure 脚本(仅在从源码仓库首次构建时需要,使用压缩包则不需要)
./bootstrap.sh - 2
配置构建;如果 Boost 安装在非标准位置,请使用 --with-boost 参数
./configure - 3
编译 Thrift
make - 4
以超级用户身份安装 Thrift
make install
使用前须知
- 从源码构建需要 autotools 以及 Boost 等前置依赖,安装文档中的列表可能已过时。
- Java、Ruby、PHP 等部分语言库需要使用各自的构建工具手动安装。
标签
常见问题
- thrift 是什么?
- 跨语言的 RPC 框架,通过代码生成器为多种编程语言构建可互通的客户端与服务端。 Apache Thrift 是一个轻量级的软件栈,用于点对点的远程过程调用(RPC)。它提供数据传输、数据序列化和应用层处理的抽象与实现,并附带代码生成器:输入简单的接口定义语言,即可为多种语言生成互通的客户端和服务端代码。
- thrift 可以免费使用吗?用的什么许可证?
- thrift 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- thrift 还在维护吗?
- 活跃维护中。thrift 最近一次提交是在 2026年10月22日。
- thrift 适合用来做什么?
- 构建由不同语言编写、需要相互调用的微服务 对外提供稳定的 RPC 接口,并在升级期间兼容旧客户端 在 C++ 后端与其他语言客户端之间共享数据结构
- thrift 怎么安装和运行?
- 生成 configure 脚本(仅在从源码仓库首次构建时需要,使用压缩包则不需要): ./bootstrap.sh 配置构建;如果 Boost 安装在非标准位置,请使用 --with-boost 参数: ./configure 编译 Thrift: make 以超级用户身份安装 Thrift: make install
- 在哪里获取 thrift?
- 源代码和安装说明在 GitHub 上:https://github.com/apache/thrift
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
2.7万3711C++Apache-2.0更新于 昨天
一种声明式模式语言,可由同一份 .skir 文件生成 TypeScript、Python、Java、Go、C++ 等多语言的类型安全数据模型与 RPC 代码。
31610TypeScriptMIT更新于 17天前
Apache Dubbo 的 Java 实现,一个用于构建 RPC 通信与微服务的框架。
4.2万2.6万JavaApache-2.0更新于 前天
无需 schema 或代码生成,即可在 TypeScript 中构建端到端类型安全的 API。
4.1万1711TypeScriptMIT更新于 10小时前
Dear ImGui 是一个轻量、依赖少的 C++ 即时模式图形界面库,适合开发调试工具与游戏引擎内的编辑器界面。
7.7万1.2万C++MIT更新于 6天前
轻量跨平台远程桌面软件,支持电脑、浏览器和移动端连接,可集中查看操控多台设备,并支持自托管。
4541442C++GPL-3.0更新于 10小时前