创建具有自动缩放吞吐量的 Azure Cosmos DB 容器和数据库

适用对象: NoSQL MongoDB Cassandra Gremlin

在 Azure Cosmos DB 中,可以在数据库和容器上配置标准的(手动的)或自动缩放的预配吞吐量。 通过自动缩放 Azure Cosmos DB 中预配的吞吐量,可以立即自动缩放数据库或容器的吞吐量 (RU/s)。 吞吐量会根据使用情况进行缩放,而不会影响工作负荷的可用性、延迟、吞吐量或性能。

自动缩放预配吞吐量非常适合于具有可变或不可预测流量模式,并且在高性能和规模方面需要 SLA 的任务关键型工作负载。 在根据每个区域和每个分区级别的使用情况单独缩放工作负载的吞吐量 (RU/s) 时,建议使用动态自动缩放。 本文介绍自动缩放预配吞吐量的好处和用例。

自动缩放的好处

使用自动缩放预配吞吐量配置的 Azure Cosmos DB 数据库和容器具有以下好处:

  • Simple:自动缩放消除了通过自定义脚本或手动缩放容量管理 RU/s 的复杂性。

  • 可缩放:数据库和容器根据需要自动缩放预配吞吐量。 客户端连接、应用程序或 Azure Cosmos DB SLA 不会中断。

  • 经济高效:自动缩放可通过在不使用时进行缩减来优化 RU/s 使用和成本使用。 你只需按小时为工作负载需要的资源付费。 在一个月的所有小时中,如果设置自动缩放最大 RU/s (Tmax),并使用 66% 或更少小时的全额 Tmax,可以通过自动缩放节省开支。 除了动态缩放之外,添加次要区域以实现高可用性更具成本效益,因为每个区域和分区会根据实际使用情况独立缩放。 若要了解详细信息,请参阅如何在标准(手动)和自动缩放预配吞吐量之间进行选择一文。

  • 高度可用: 使用自动缩放的数据库和容器利用相同的多区域分布式容错且高度可用的 Azure Cosmos DB 后端来确保数据持久性和高可用性。

自动缩放的用例

自动缩放的用例包括:

  • 可变或不可预测的工作负载:当工作负载的使用具有可变或不可预测的峰值时,自动缩放会基于使用情况自动增加和缩减。 示例包括根据季节性具有不同流量模式的零售网站;在一天中的不同时间出现峰值的 IOT 工作负载;每月或每年几次出现峰值使用量的业务线应用程序,等等。 利用自动缩放,不再需要为峰值或平均容量进行手动预配。

  • 新应用程序:如果开发新应用程序,但不确定所需的吞吐量 (RU/s),则可以通过自动缩放轻松地开始进行。 可以从 100-1000 RU/s 的自动缩放入口点开始,在一段时间内监视使用情况,并确定正确的 RU/s。

  • 不常使用的应用程序:如果你每天、每周或每月只使用应用程序几次,每次几小时(例如低流量的应用程序/网站/博客站点),自动缩放可调整容量以处理峰值使用量并在高峰结束时进行纵向缩减。

  • 开发和测试工作负载:如果你或你的团队在工作时间使用 Azure Cosmos DB 数据库和容器,但在夜间或周末不使用,则自动缩放可通过在不使用时将其纵向缩减至最小来节省成本。

  • 计划生产工作负载/查询:如果你有一系列要在空闲时间段运行的计划请求、操作或查询,则可以使用自动缩放轻松完成该操作。 需要运行工作负载时,吞吐量将自动缩放到所需值,然后纵向缩减。

构建这些问题的自定义解决方案不仅需要大量时间,还会在应用程序的配置或代码中引入复杂性。 自动缩放可立即实现以上方案,无需进行自定义或手动容量缩放。

自动缩放预配吞吐量的工作方式

通过自动缩放配置容器和数据库时,需要指定所需的最大吞吐量 Tmax。 Azure Cosmos DB 会缩放吞吐量 T,如 0.1*Tmax <= T <= Tmax。 例如,如果将最大吞吐量设置为 20,000 RU/s,,则吞吐量将在 2000 到 20,000 RU/s 之间进行缩放。 由于缩放是自动且即时的,因此在任何时间点,都可以无延迟地消耗预配 Tmax

每小时都会按系统在该小时内缩放到的最高吞吐量 T 进行计费。 启用动态缩放后,缩放基于每个物理分区和区域的使用情况 (RU/s) 进行。 由于每个分区和区域独立缩放,这可能会为非统一工作负载节省成本,因为避免了不必要的纵向扩展。

自动缩放最大吞吐量 Tmax 的入口点从 1000 RU/s 开始,在 100-1000 RU/s 之间缩放。 可以按增量 1000 RU/s 设置 Tmax,并随时更改值。

对现有资源启用自动缩放

使用 Azure 门户CLIPowerShell 在现有数据库或容器上启用自动缩放。 随时可以在自动缩放与标准(手动)预配吞吐量之间切换。 有关详细信息,请参阅此文档

自动缩放的吞吐量和存储限制

对于 Tmax 的任何值,数据库或容器均可以存储总计 0.1 * Tmax GB。 达到此存储量之后,将基于新的存储值自动增加最大 RU/s,而不会影响应用程序。

例如,如果从 50,000 RU/s 的最大 RU/s(在 5000 - 50,000 RU/s 之间缩放)开始,则最多可存储 5000 GB 数据。 如果超过 5000 GB(例如,存储现在是 6000 GB),则新的最大 RU/s 为 60,000 RU/s(在 6000 到 60,000 RU/s 之间缩放)。

将数据库级别吞吐量与自动缩放结合使用时,可以让前 25 个容器共享 1000 的自动缩放最大 RU/s(在 100 - 1000 RU/s 之间缩放),只要未超过 100 GB 存储即可。 有关详细信息,请参阅此文档

比较 – 使用手动与自动缩放吞吐量配置的容器

有关更多详细信息,请参阅有关如何在标准(手动)与自动缩放吞吐量之间进行选择的此文档

具有标准(手动)吞吐量的容器 具有自动缩放吞吐量的容器
预配吞吐量 (RU/s) 手动预配。 基于工作负载使用模式自动并即时缩放。
请求/操作的速率限制 (429) 如果消耗超出预配容量,则可能会发生。 如果在配置的自动缩放吞吐量范围内消耗 RU/s,则不会发生。
容量规划 必须执行容量规划,并设置所需的确切吞吐量。 系统会自动处理容量规划和容量管理。
定价 使用按小时费率的标准(手动)RU/s,按小时为手动预配 RU/s 付费。 按小时为系统在该小时内扩展到的最高 RU/s 付费。

对于单写入区域帐户,使用按小时费率的自动缩放 RU/s,为每小时使用的 RU/s 付费。

对于具有多个写入区域的帐户,自动缩放不收取额外费用。 需使用相同的多区域写入 RU/秒小时费率,为每小时使用的吞吐量付费。

最适合工作负载类型 可预测和稳定的工作负载 不可预测和可变的工作负载

将标准预配吞吐量迁移到自动缩放

想要将大量资源从标准预配吞吐量迁移到自动缩放的用户可以使用 Azure CLI 脚本将 Azure 订阅中的每个吞吐量资源迁移到自动缩放。 有关详细信息,请参阅转换为自动缩放

后续步骤