Skip to content
AI-Daily-Builder

2026-10-25 — views

OpenAI 詳細說明如何擴展 Azure Cosmos DB 以支援 Habitat 儲存平台

為什麼值得讀 一個關於在龐大全球規模下平衡多租戶效率與隔離需求的案例研究。

OpenAI 工程師說明如何在 Habitat 中最佳化 Azure Cosmos DB,以支援橫跨 40 個區域、超過十億名使用者。

使用 Azure Cosmos DB 擴展 Habitat

OpenAI 詳細說明了其擴展 Habitat(其線上儲存平台)以服務超過 10 億名 ChatGPT 使用者的工程歷程第二部分。該平台需要在 40 個地理區域內達到毫秒級回應時間,並依賴 Azure Cosmos DB 作為其底層儲存元件。透過與 Azure 團隊密切合作,OpenAI 開發出一種可行的多租戶方法,使用共同管理的容器(co-managed containers)以在龐大規模下實現優異的讀取效能。

多租戶的權衡

隨著基礎設施擴展,團隊通常會從提供隔離但需要昂貴過度配置(over-provisioning)的單租戶系統,轉向由中央資料庫團隊管理的多租戶系統。雖然多租戶提高了資源效率,但也帶來了挑戰,例如「吵雜鄰居」(noisy neighbors)問題,即某個租戶的高負載會降低其他租戶的效能。Habitat 的歷程經歷了一種循環演進:從單一多租戶容器開始,轉向用於隔離的單租戶後端容器,最終回歸多租戶預設值,以平衡效率與可靠性。

解決分割限制

最初,Habitab 依賴 Azure Cosmos DB 的原生機制,允許任何客戶端負載通過,並依賴每個邏輯分割鍵(logical partition key)聲明的 10,000 RU/s 限制。這種方法面臨三個主要問題。首先,當不同的產品使用案例共用 user_id 或 workspace_id 等鍵值時,會發生邏輯分割鍵衝突,從而限制吞吐量。其次,由於邏輯分割共用物理分割限制,導致「吵雜鄰居」問題出現,允許冷門工作負載干擾核心流程。第三,由於物理分割拆分導致弱分割;隨著資料量增加,每個分割的吞吐量容量縮減,降低了儲存密集型使用案例的效能。

實作工作負載隔離

為了減輕這些問題,OpenAI 透過為關鍵的新使用案例使用獨立的 Azure Cosmos DB 容器來引入工作負載隔離。這允許每個容器擁有獨立的物理分割,減少吵雜鄰居效應。工程師也實作了腳本以同步總預配吞吐量與物理分割數量,防止拆分期間容量縮減。然而,遺留的關鍵使用案例仍滯留在共享的預設容器中,導致壓力增加和生產事故。因此,OpenAI 開始為任何新服務或主要功能預配獨立容器,以保護預設容器免受過度負載影響。

實戰筆記

大規模使用 Azure Cosmos DB 的開發人員應密切監控物理分割拆分,因為它們可能會無聲地降低每個分割的有效吞吐量。透過為高流量或關鍵服務使用獨立容器來實作嚴格的工作負載隔離,可以防止吵雜鄰居問題並確保可靠的效能。


來源

標籤

請喝咖啡