OpenAI Habitat 撑起 10 亿用户:120ms 降到 10ms

10 月 23 日,OpenAI 工程团队公开了 Habitat 在线存储平台的扩展细节,这套平台要同时服务超过 10 亿 ChatGPT 用户,覆盖 40 个地理区域,托管超过 500 PB 数据,最大单个 Azure Cosmos DB 账户承载每秒 2000 万次以上查询。

12 倍延迟改善来自三处改动

官方给出的对比是全球读取 p50 从约 120 毫秒降到约 10 毫秒,12 倍提升。拆开看有三项主要变化:把关键数据复制到靠近用户的地理区域、在区域内启动分布式缓存、把 Habitat 核心代码从 Python 重写为 Rust。缓存层用 Valkey,失效机制依赖 Cosmos DB change feed 与 Change Data Capture,变更在数秒内传播到全球,再由本地服务对各区域缓存执行失效后重新填充。

多租户与容量的取舍

早期方案给关键用例开独立容器,结果暴露了一个反直觉问题。共享容器总吞吐 100M RU/s 且已用 80%,一个新用例从 0 QPS 涨到 100 万 QPS 时,负载测试只占剩余容量的 0.005%,正式发布占 5%;换成 10K RU/s 的独立容器,同样流量在测试阶段就占 10%,发布瞬间占到 10000%。最终 OpenAI 转回共享多租户容器作默认方案,同时让 Azure 把 serverless 单物理分区上限从 5000 RU/s 提到 10000 RU/s,并支持按 RU 使用量拆分。

数据侧规模同样惊人,CDC 每秒捕获数百万次变更,横跨数千个容器、数百万个容器分区,进入 100 多个 Kafka topic,worker 分布在多个地理区域。站内此前已经有一篇更完整的拆解OpenAI Habitat 的存储与延迟优化路径。

为支撑下一个 10 亿用户,OpenAI 正在自研 exabyte 级在线存储系统,底层用 Rockset 的 RocksDB Cloud 核心加基于 Raft 的复制,文档模型与 Cosmos DB 保持一致,代价是峰值 QPS 更低。