Featured image of post 从 Python 到 Rust:OpenAI Habitat 的 10 倍增长重构之路

从 Python 到 Rust:OpenAI Habitat 的 10 倍增长重构之路

OpenAI 将 ChatGPT 存储后端从 Python 重写为 Rust,支撑每秒 7000 万请求与 500PB 数据。

核心事件:Habitat 存储系统完成语言级重构

OpenAI 正式完成其内部存储系统 Habitat 的重写,将核心从 Python 迁移至 Rust,以支撑 ChatGPT 持续增长的用户规模。

  • 重构完成时间:2026 年初(基于文中时间线推断)
  • 目标语言:Rust(用于高性能、内存安全的核心组件)
  • 保留层:少量 Python 外围服务仍用于快速迭代场景
  • 支持规模:每秒 7000 万次请求,500PB 存储,每周 10 亿用户

此次重构并非紧急应对,而是 OpenAI 在早期就预见到的语言演进路径——早在技术瓶颈显现前,团队已明确 Python 无法支撑长期扩展需求。

重构逻辑:从“能跑”到“能扛住”的十年定力

Habitat 最初是连接数据库的小型 Python 库,早期开始承担 ChatGPT 的核心存储任务。随着用户量指数增长,系统面临显著压力:

  • Python 的 GIL(全局解释器锁)限制了多线程并行效率
  • 垃圾回收延迟导致高负载下 P99 延迟抖动明显
  • 每次请求需穿越的 Python 解释层带来固定开销

反差数据在于:Habitat 在 Python 阶段就已达到较大规模,OpenAI 选择不重写长达数年,直到 Rust 社区生态成熟、内部工程师重度实践可用——而非等到系统彻底崩溃。

团队采取了分阶段策略:

  1. 先用 Rust 编写核心 KV 引擎(Captive Engine),保留 Python 绑定层;
  2. 将高吞吐路径(如对象压缩、传输协议)迁移至 Rust;
  3. Python 层仅作为控制平面与业务逻辑胶水层存在。

技术演进:性能与安全的双重收益

迁移到 Rust 后,Habitat 暴露出三个关键提升:

  • 延迟稳定性:P99 超时请求下降 90%,因无 GC 暂停与 GIL 争用
  • 内存效率:静态分配策略使单位请求内存占用降低 40%+
  • 安全性:编译期借用检查杜绝了空指针与 Use-After-Free 类漏洞

在 OpenAI 的测试中,单个 Rust 核心节点可处理的并发连接数达到 Python 版本的 3 倍以上。更关键的是,Rust 的零成本抽象使得细粒度控制性能(如自定义缓冲池、零拷贝 I/O)成为可能,而无需牺牲代码可维护性。

重构教训:技术债的“延迟偿还”哲学

OpenAI 的做法颠覆了传统“系统崩溃才有理由重写”的认知。其技术负责人曾指出重写是优先级问题,需权衡生态成熟时机而非原地修补。

这一策略带来两个反常识优势:

  1. Python 仍贡献价值:外围的快速迭代(如监控指标生成、日志解析)由 Python 负责,避免了所有服务过早固化
  2. 渐进式替换风险可控:新旧实现并存期间可通过流量切分验证稳定性,而非“big bang”式上线

适合采用类似路径的团队:

  • 已有 Python 中心化服务,且性能瓶颈尚未影响 SLA
  • 团队有一定系统编程经验或能引入 Rust 专家
  • 能承受 12-24 个月的长期迭代周期

建议再观望的团队:

  • 若当前 Python 服务已达单集群上限且无横向扩展空间,应优先考虑混合语言架构而非彻底重写
  • 工程.resource 不足以支持并行维护两套实现栈时,建议选择增量重构(如仅重写热点模块)

写在最后

Habitat 的实践表明:技术债的代价不在于“是否欠债”,而在于“是否持续计算复利”。当一个系统在错误语言上稳定运行多年,往往比频繁重写更具工程智慧——前提是这种稳定本身就在争取时间,而非掩盖问题。