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 经历了三个阶段:
- 阶段 I – 原始多租户 – 单个 Cosmos DB 容器处理所有流量。逻辑分区键限制和嘈杂邻居效应导致吞吐量争用。
- 阶段 II – 每功能单租户 – 单独的容器隔离工作负载,但引入了大量的容量规划开销和频繁的发布日扩展事件。
- 阶段 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 毫秒)。
- 数据本地性 – 在具有数据驻留要求的区域部署多个 Cosmos DB 账户;在容量允许的情况下,数据与计算资源共置。
- 选择性复制 – 延迟关键数据集(例如,认证元数据)被复制到所有 40 个 Azure 区域;其他数据保留在较少的区域。
- 集成分布式缓存 – 基于 Valkey 的旁路缓存将近期对象存储在请求处理程序附近。缓存失效使用 Cosmos DB 变更源 CDC,实现秒级新鲜度。
- 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 相关的职位。