使用 Azure Functions 计时器触发器缩放 Azure Cosmos DB 吞吐量

适用范围: NoSQL

Azure Cosmos DB 帐户的性能基于以每秒请求单位数 (RU/s) 表示的预配吞吐量的数量。 预配粒度为秒,并且基于最高的 RU/秒按小时计费。 这种预配的容量模型使服务能够提供可预测且一致的吞吐量,保证低延迟、高可用性。 大多数生产工作负荷都具有这些特征。 但是,在开发和测试环境中,如果 Azure Cosmos DB 只在工作时间使用,则可以在上午提高吞吐量,在晚上在工作时间过后降低吞吐量。

可以通过 Azure 资源管理器模板Azure CLIPowerShell 为 API for NoSQL 帐户设置吞吐量,或者通过使用语言特定的 Azure Cosmos DB SDK 进行设置。 使用资源管理器模板、Azure CLI 或 PowerShell 的好处在于它们支持所有 Azure Cosmos DB 模型 API。

吞吐量计划程序示例项目

为了简化按计划缩放 Azure Cosmos DB 的过程,我们创建了一个名为 Azure Cosmos DB 吞吐量计划程序的示例项目。 此项目是一个 Azure Functions 应用,它有两个计时器触发器:ScaleUpTrigger 和 ScaleDownTrigger。 触发器运行一个 PowerShell 脚本,该脚本根据每个触发器的 resources.json 文件中的定义在每个资源上设置吞吐量。 ScaleUpTrigger 配置为在 UTC 上午 8 点运行,ScaleDownTrigger 配置为在 UTC 下午 6 点运行,可以在每个触发器的 function.json 文件内轻松更新这些时间。

你可以在本地克隆此项目,对其进行修改,以指定要增加和减少的 Azure Cosmos DB 资源以及要运行的计划。 稍后,可以将其部署到 Azure 订阅中,并使用具有 Azure 基于角色的访问控制 (Azure RBAC) 权限和“Azure Cosmos DB 操作员”角色的托管服务标识对其进行保护,以在 Azure Cosmos DB 帐户上设置吞吐量。

后续步骤