Linux-Tutorial 之 Apache Thrift 0.9.3 安装与使用指南

发布时间:2026/10/6 7:46:39
Linux-Tutorial 之 Apache Thrift 0.9.3 安装与使用指南 文档教程技术博客【免费下载链接】Linux-Tutorial《Java 程序员眼中的 Linux》项目地址https://gitcode.com/gh_mirrors/li/Linux-Tutorial点击查看免费下载导读本篇技术指南聚焦于在 Linux以 CentOS 为例环境下安装并使用 Apache Thrift 0.9.3覆盖两条完整可复现的路径源码包编译安装适用于需要将 thrift 编译器原生集成到系统中的场景与Docker 容器方式直接使用适用于快速生成多语言代码、无需污染宿主环境的场景。读完本文后你将掌握 Thrift 版本选择的考量、依赖安装、./configure --without-tests编译安装全流程以及如何用一条docker run命令把.thrift接口定义文件生成成 Java 类代码为后续接入 RPC 服务框架打下基础。本文以本仓库《Java 程序员眼中的 Linux》中的 markdown-file/Thrift-Install-And-Usage.md 为骨架整理扩充仓库目录索引见 SUMMARY.md 与 TOC.md。为什么需要 Thrift以及如何选版本Apache Thrift 是一个跨语言的 RPC 框架核心思路是用一份中立的接口定义语言IDL即.thrift文件描述数据结构与远程服务再由 thrift 编译器自动生成各语言的客户端与服务端骨架代码。对 Java 开发者而言使用 Thrift 的典型场景是服务端与客户端分属不同技术栈但仍希望以高性能、强类型的方式通信。在本仓库中也能找到 Thrift 在 Java 生态中真实落地的旁证Dubbo 的 admin 工程通过 Maven 引入org.apache.thrift:libthrift作为序列化/通信依赖见 markdown-file/Dubbo-Install-And-Settings.md这说明了 Thrift 在 Java 服务治理/序列化体系中的通用性。版本选择原文档给出的版本建议如下官网下载页https://thrift.apache.org/download可获取各语言官方二进制包与源码包Apache 综合下载地http://archive.apache.org/dist/thrift/可下载到旧版本源码包依赖条件说明https://thrift.apache.org/docs/install/源码安装方式说明https://thrift.apache.org/docs/BuildingFromSource作者当时的版本结论文档撰写时最新版本为 0.10.0而作者选择0.9.3理由是该时期各语言实际使用最多的还是 0.9 系列版本。这是一个值得留意的工程判断RPC 框架的跨语言兼容性远比版本号新旧重要——若团队多个语言模块各自绑定了不同版本的 Thrift生成的代码协议不一致会导致通信失败因此生产环境往往偏向于跟随生态内使用最广、验证最充分的稳定版本。下载地址0.9.3 源码包http://archive.apache.org/dist/thrift/0.9.3/thrift-0.9.3.tar.gz源码包编译安装推荐原文档明确指出一般建议下载 tar.gz 自己编译安装。原因在于 Thrift 需要为本机各语言生成绑定代码官方预编译二进制未必覆盖你当前的语言组合与系统版本而源码编译可完全掌控。第一步安装编译依赖在 CentOS 上通过 yum 一次性安装全部依赖yum install -y autoconf automake libtool cmake ncurses-devel openssl-devel lzo-devel zlib-devel gcc gcc-c各依赖的作用依赖包作用autoconf/automake/libtool生成与执行 GNU 构建系统configure / make 流程的前置工具链cmake部分语言绑定如 C 测试等的构建工具ncurses-devel终端界面相关库的头文件编译依赖需要openssl-devel传输层 TLS 支持所需lzo-devel/zlib-devel压缩库支持zlib 几乎必装gcc/gcc-cC/C 编译器Thrift 编译器本体由 C 编写若你的机器是 Ubuntu/Debian 系可将yum install -y替换为apt-get install -y并改用对应的-dev包名。仓库 favorite-file/shell/ 目录下提供了同类安装脚本的编写范式可参考如 install_common_tool_CentOS.sh、install_common_tool_ubuntu.sh。第二步解压、配置、编译、安装原文档给出的安装总流程如下tar zxvf thrift-0.9.3.tar.gz cd thrift-0.9.3 ./configure --without-tests make make install要点说明./configure --without-tests跳过测试套件可显著缩短编译时间、降低对测试框架的依赖适合生产服务器上的快速安装。make编译 thrift 编译器本体。0.9.3 是较早期的版本建议在编译前确认依赖已装全否则可能出现 configure 检查失败或头文件缺失报错。make install默认将可执行文件安装到/usr/local/bin/thrift库文件装入/usr/local/lib等标准路径。第三步验证安装thrift --version正常输出形如Thrift version 0.9.3说明安装成功。Docker 方式直接使用免编译如果不想在本机编译或者只是想临时生成一次代码可以直接使用官方 Docker 镜像以容器代替 thrift 编译器。拉取镜像docker pull thrift:0.9.3镜像标签与 Thrift 版本一一对应thrift:0.9.3即对应本文主推的 0.9.3 版本。用 Docker 生成 Java 类假设我们有一个接口定义文件service.thrift放在/opt目录下/opt/service.thrift我们要根据该文件生成 Java 类输出到/opt/thrift/data目录执行命令docker run -v $PWD:/opt thrift:0.9.3 thrift -o /opt/thrift/data --gen java /opt/service.thrift命令拆解参数含义-v $PWD:/opt把当前工作目录挂载到容器内的/opt实现文件进出容器thrift:0.9.3使用的镜像thrift容器内执行的 thrift 编译器命令-o /opt/thrift/data指定输出目录容器视角即宿主当前目录下的thrift/data--gen java指定生成语言为 Java/opt/service.thrift输入接口定义文件容器视角注意由于挂载目录与命令中的路径都是以容器内的/opt为基准实际生成的文件会落在宿主机当前工作目录的thrift/data/下。--gen后面支持的语言很多如java、py、cpp、php、go等可根据需要替换。编写一份可用的 Thrift IDL 示例原文档指出如果手边没有service.thrift也无妨可以直接创建一个内容含义理解与否不影响生成流程示例如下namespace java com.gitnavi.service struct User { 1: i32 id 2: string username } service UserService { User getUser() }逐行解读这份最小 IDLnamespace java com.gitnavi.service声明生成的 Java 代码所在包名。namespace后可跟任意支持的语言如namespace py、namespace cpp等。struct User { ... }定义一个结构体相当于 Java 中的 POJO/实体类。字段写法为序号: 类型 字段名序号从 1 开始是协议层面的字段标识一旦发布字段序号不要随意变更否则会破坏老客户端兼容性。1: i32 id32 位整型字段对应 Java 的int。2: string username字符串字段对应 Java 的String。service UserService { User getUser() }定义一个远程服务接口方法返回值可以是基础类型或已定义的结构体。生成结果的落盘位置以 Docker 命令为例执行成功后宿主机当前目录下会生成thrift/ └── data/ └── com/ └── gitnavi/ └── service/ ├── User.java # 结构体对应的 POJO含序列化读写逻辑 ├── UserService.java # 服务接口定义 ├── ... # 以及 Client / Processor / Iface 等配套类之后这些 Java 文件即可直接拷贝进工程源码配合 Maven 依赖org.apache.thrift:libthrift使用——正如仓库 markdown-file/Dubbo-Install-And-Settings.md 中展示的那样Java 侧只需引入libthrift一个运行库即可收发消息。从 IDL 到可运行 RPC 的下一步本文生成的只是代码骨架服务接口与数据结构要让 RPC 真正跑起来还需要服务端实现UserService.Iface接口中的getUser()方法并启动一个 Thrift 服务器如TServerSocket 某个传输/协议组合。客户端通过生成的UserService.Client建立连接并调用远程方法。引入运行库Java 侧在pom.xml中加入org.apache.thrift:libthrift使用与生成代码一致的版本如 0.9.3。本文档markdown-file/Thrift-Install-And-Usage.md聚焦于安装与代码生成环节服务端/客户端的具体编程实现不在其范围内如需完整示例可查阅 Thrift 官方《BuildingFromSource》与各语言 Tutorial并务必保持生成代码版本与运行库版本一致。常见问题与排错建议现象可能原因与处理./configure检查报错依赖未装全回到第一节逐项确认autoconf automake libtool cmake ncurses-devel openssl-devel lzo-devel zlib-devel gcc gcc-cmake编译报头文件缺失缺少对应的-devel开发包如ncurses-devel、openssl-develthrift: command not found安装未成功或/usr/local/bin不在 PATH可用which thrift定位必要时补充 PATHDocker 生成后找不到输出文件检查-v $PWD:/opt挂载与-o /opt/thrift/data的容器路径是否一致输出落在宿主当前目录的thrift/data/下客户端与服务端通信异常大概率是两端 Thrift 版本不一致确保生成代码与libthrift运行时版本同为 0.9.3小结安装首选源码编译yum install依赖 →tar zxvf→./configure --without-tests→make→make install→thrift --version验证五个步骤即可获得原生 thrift 编译器。快速上手用 Dockerdocker pull thrift:0.9.3配合一条docker run -v $PWD:/opt thrift:0.9.3 thrift -o /opt/thrift/data --gen java /opt/service.thrift即可完成跨语言代码生成无需在宿主安装任何编译链。版本一致性是红线Thrift 的跨语言互通依赖协议版本一致选择生态内最普及的稳定版本如 0.9.3并保证生成代码与运行库版本对齐是接入 Thrift 最重要的工程纪律。赞分享文档教程技术博客【免费下载链接】Linux-Tutorial《Java 程序员眼中的 Linux》项目地址https://gitcode.com/gh_mirrors/li/Linux-Tutorial点击查看免费下载相关推荐Apache Thrift Python 软件库包结构、命名约定与安装使用全指南Apache Thrift Python 软件库包结构、命名约定与安装使用全指南 Apache Thrift 官方仓库为 Python 语言提供了完整的 Th后端微服务API设计BaiduPCS-Go实用的百度网盘命令行客户端BaiduPCS Go实用的百度网盘命令行客户端 BaiduPCS Go 是一个仿 Linux shell 的百度网盘命令行客户端在 iikira/BaidCLI网络WAF缓存与性能优化Cache模式与ThrottledAction提升应用响应速度的终极指南WAF缓存与性能优化Cache模式与ThrottledAction提升应用响应速度的终极指南 在构建现代化的XAML应用程序时性能优化是确保用户体验流畅的关软件架构上一篇Plannotator ADR-001Annotate 会话中源文件被删除后的处理——“保存即重建”的设计与实现下一篇视频播放速率控制哲学解构现代Web媒体交互的时空艺术创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询