使用 Azure Functions 計時器觸發程序來縮放 Azure Cosmos DB 輸送量

適用於:NoSQL

Azure Cosmos DB 帳戶的效能取決於佈建的輸送量,以每秒要求單位數 (RU/秒) 表示。 佈建時的細微性為秒,且會根據每小時的最高 RU/秒計費。 此佈建容量模型可讓服務提供可預測且一致的輸送量、保證低延遲以及高可用性。 大部分的生產工作負載都具有這些特徵。 不過在開發和測試環境中,Azure Cosmos DB 只會在上班時間使用,因此可在早上擴大輸送量,並在上班時間結束後於晚上調整回來。

您可以透過 Azure Resource Manager 範本Azure CLIPowerShell (適用於 API for NoSQL 帳戶),或使用特定語言的 Azure Cosmos DB SDK 來設定輸送量。 使用 Resource Manager 範本、Azure CLI 或 PowerShell 的優點是,它們支援所有 Azure Cosmos DB 模型 API。

輸送量排程器範例專案

為簡化依排程調整 Azure Cosmos DB 的程序,我們建立了名為 Azure Cosmos DB 輸送量排程器 (英文) 的範例專案。 此專案是具有兩個計時器觸發程序 ("ScaleUpTrigger" 和 "ScaleDownTrigger") 的 Azure Functions 應用程式。 觸發程序會執行 PowerShell 指令碼,在每個觸發程序的 resources.json 檔案中定義每個資源的輸送量。 ScaleUpTrigger 設定為在上午 8 點 (國際標準時間) 執行,而 ScaleDownTrigger 設定為在下午 6 點 (國際標準時間) 執行,且可在每個觸發程序的 function.json 檔案中輕鬆更新這些時間。

您可以在本機複製此專案並加以修改,以指定要擴大和縮小的 Azure Cosmos DB 資源,以及要執行的排程。 之後可以將其部署在 Azure 訂用帳戶中,並使用受控服務識別搭配 Azure 角色型存取控制 (Azure RBAC) 權限來加以保護,使用「Azure Cosmos DB 操作員」角色來設定 Azure Cosmos DB 帳戶的輸送量。

後續步驟