OpenAI Habitat 存储平台扩展:多租户、Azure Cosmos DB 增强与全球性能

摘要

OpenAI 发布了其 Habitat 扩展故事的第二部分,描述了团队如何重新架构 Azure Cosmos DB 的使用方式,引入多租户默认容器,添加热键限流、QoS、自定义无服务器模式、基于 Rust 的服务以及由 CDC 驱动的缓存,以超过 20M QPS 的速度服务超过 500 PB 的数据,并将读取延迟从约 120 毫秒降至约 10 毫秒。


Habitat 概述

Habitat 是 OpenAI 的在线存储平台,为 40 个地理区域的所有 OpenAI 产品提供毫秒级数据访问。它支撑着超过 10 亿 ChatGPT 用户,并存储超过 500 PB 的数据。


多租户设计历程

结论:共享容器、多租户模型现在以规模提供可靠、低维护的存储。

OpenAI 经历了三个阶段:

  1. 阶段 I – 原始多租户 – 单个 Cosmos DB 容器处理所有流量。逻辑分区键限制和嘈杂邻居效应导致吞吐量争用。
  2. 阶段 II – 每功能单租户 – 单独的容器隔离工作负载,但引入了大量的容量规划开销和频繁的发布日扩展事件。
  3. 阶段 III – 默认多租户与缓解措施 – 通过与 Azure 合作,OpenAI 添加了热键限流、QoS 分层和自定义无服务器模式,使单个共享容器能够再次安全地托管多个租户。

“自那以后,尽管产品开发加速,我们再也没有遇到任何资源调配或嘈杂邻居事件。” – OpenAI 工程团队


Azure Cosmos DB 增强

结论:Azure 构建的原语现在无需手动干预即可处理热键、弱分区和扩展。

  • 热键限流 – 优先限制最活跃的逻辑键,防止单个租户垄断物理分区。
  • 服务质量(QoS)分层 – 为批量或离线工作负载分配较低优先级,保护交互式延迟敏感请求。
  • 自定义无服务器模式 – 将 Azure 的无服务器产品扩展到每个物理分区 10K RU/s,并添加基于 RU 的分区拆分,消除了手动吞吐量预配的需求。

这些更改使 OpenAI 能够运行一个单个共享容器,以超过 20M 每秒查询数(QPS)的速度服务数据,同时存储数十 PB 的数据。


通过共同管理的服务实现可靠性

结论:与 Azure 的联合工程提供了生产级测试和快速事件响应。

  • OpenAI 和 Azure 现在共享仪表板、测试套件和直接工程渠道。
  • 2024 年的一次区域中断表明,大型 Cosmos 账户的故障转移可能需要数小时;随后的联合测试减少了故障转移时间并消除了网关踩踏。
  • 控制平面可扩展性、连接池和元数据缓存的持续共同工程已成为标准实践。

全球性能优化

结论:通过将数据移近用户、复制关键数据集以及添加 CDC 驱动的缓存,读取延迟降低了 12 倍(约 120 毫秒 → 约 10 毫秒)。

  1. 数据本地性 – 在具有数据驻留要求的区域部署多个 Cosmos DB 账户;在容量允许的情况下,数据与计算资源共置。
  2. 选择性复制 – 延迟关键数据集(例如,认证元数据)被复制到所有 40 个 Azure 区域;其他数据保留在较少的区域。
  3. 集成分布式缓存 – 基于 Valkey 的旁路缓存将近期对象存储在请求处理程序附近。缓存失效使用 Cosmos DB 变更源 CDC,实现秒级新鲜度。
  4. Rust 服务层 – 用 Rust 重写 Habitat 服务消除了 Python 开销,有助于降低延迟。

图 5(在原始帖子中)显示了这些更改后 p50 读取延迟从 120 毫秒改善到 10 毫秒。


扩展变更数据捕获(CDC)

结论:专门的 CDC 平台抽象了复杂性,并在数千个容器中维持每秒数百万次更改。

  • CDC 流为超过 100 个 Kafka 主题提供数据,支持二级索引、分析和实时功能。
  • 内部控制平面自动发现相关的 Cosmos 账户/容器,平衡工作线程池,并将读取路由到副本区域。
  • 健壮性措施包括租约存储隔离、死信队列以及自定义 Azure CDC SDK 检查点批处理。

未来方向:Exabyte 级自建存储

结论:OpenAI 正在原型设计一个自定义存储系统,以应对下一个十亿用户。

  • 该系统结合了 RocksDB Cloud(来自 Rockset)和 基于 Raft 的复制。
  • 它保留了 Cosmos 风格的文档模型,同时使用分离式存储来降低闪存容量需求。
  • 预期的权衡:以峰值 QPS 降低换取巨大的存储效率。

对行业的影响

  • 多租户可行性 – OpenAI 证明,在提供商级增强的情况下,单个共享容器可以安全地服务数十亿请求,降低运营复杂性。
  • 提供商协作 – 在边缘规模下,消费者与云提供商之间的深度共同工程变得至关重要;其他大型 AI 公司可能需要类似的合作伙伴关系。
  • 性能优先架构 – 结合本地性、选择性复制、CDC 驱动的缓存和低级语言重写,可实现数量级的延迟提升,这是任何全球分布式服务的蓝图。
  • 自建存储路线图 – 即使拥有 Azure 的能力,OpenAI 仍在投资内部解决方案,这表明未来的前沿 AI 工作负载可能会超出公共云存储的限制。

关键要点

  • Habitat 从一个简单的 Python 客户端演变为一个全球分布式、多租户存储平台,服务超过 500 PB 和 超过 20M QPS。
  • Azure Cosmos DB 通过热键限流、QoS 和自定义无服务器模式进行了扩展,使单个共享容器能够取代昂贵的每功能容器。
  • 全球延迟改进源于数据本地性、选择性复制、CDC 驱动的 Valkey 缓存和 Rust 服务重写,将读取 p50 延迟从约 120 毫秒降至约 10 毫秒。
  • 与 Azure 的持续共同工程以及即将推出的 exabyte 级内部存储系统,使 OpenAI 能够支持下一个十亿用户。

对于对前沿规模数据基础设施感兴趣的工程师,OpenAI 正在招聘与 Habitat 相关的职位。

Sources