Compartir a través de

动态缩放(按区域和按分区自动缩放)

适用对象: NoSQL MongoDB Cassandra Gremlin

默认情况下,Azure Cosmos DB 自动缩放是基于最活跃的区域和分区缩放工作负荷。 对于跨区域和分区具有不同工作负荷模式的不一致工作负荷,这种缩放可能会导致不必要的纵向扩展。 对自动缩放(也称为“动态缩放”)进行此改进后,“按区域和按分区自动缩放”功能现在允许工作负荷的区域和分区根据使用情况独立缩放。

对于跨区域和分区不一致的自动缩放工作负荷,建议使用动态缩放。 如果经常遇到热分区和/或有多个区域,此功能可节省成本。 启用动态缩放后,此功能将应用于帐户中的所有自动缩放资源。

用例

  • 数据库工作负荷,具有高流量主区域和用于灾难恢复的辅助被动区域。
    • 使用动态缩放时,通过多个区域实现高可用性更具成本效益。 次要区域独立缩放,并在空闲时自动纵向缩减。 次要区域在变为活动状态后也会自动纵向扩展,同时处理来自主要区域的写入复制操作。
  • 多区域数据库工作负荷。
    • 由于自然流量增长和全天下降,这些工作负荷通常观察到请求分布不均衡。 例如,数据库可能在多区域分布时区的工作时间处于活动状态。

示例

例如,如果我们有一个具有 1000 RU/s 和 2 个分区的集合,则每个分区可以达到 500 RU/s。 对于一个小时的活动,利用率如下所示:

区域 分区 吞吐量 利用率 说明
P1 <= 500 RU/s 100% 500 RU/s,其中 50 RU/s 写入操作,450 RU/s 用于读操作。
P2 <= 200 RU/s 40% 200 RU/s,包含所有读操作。
阅读 P1 <= 150 RU/s 30% 150 RU/s,其中 50 RU/s 用于从写入区域复制的写入。 100 RU/s 用于此区域中的读操作。
阅读 P2 <= 50 RU/s 10%

由于所有分区都根据最热的分区统一缩放,因此写入区域和读取区域都缩放为 1000 RU/s,使总 RU/秒高达 2000 RU/s。

通过动态缩放,可以优化吞吐量。 总消耗量为 900 RU/s,因为每个分区或区域的吞吐量都是独立缩放的,并且使用相同方案按小时度量。

监视动态自动缩放

可以使用以下指标监视动态自动缩放:

标准名称 定义 使用情况指标
自动缩放的 RU 仅针对启用了动态自动缩放的帐户显示每个分区和区域级别的动态缩放预配吞吐量。 使用此指标查看每个区域中的分区如何根据其使用情况独立缩放。

使用 Azure Monitor 指标 - Autoscaled RU分析如何跨分区和区域应用新的自动缩放。 筛选到所需的数据库帐户和容器,然后按物理 PartitionID 指标筛选或拆分。 此指标显示其不同区域的所有分区。
预配的吞吐量 显示在一小时内缩放到的合并最高 RU/s,并表示该小时缩放的总 RU/s。 可以使用 Provisioned Throughput 指标查看每小时计费的 RU/s。 使用动态自动缩放时,会针对每个分区和区域级别每小时缩放到的合并最高 RU/s 计费。
规范化 RU 消耗量 此指标表示每个分区和区域级别的已使用 RU/s 与预配 RU/s 的比率。 使用此指标可确定自动缩放最大吞吐量是否预配不足或过度。

如果指标值保持一致,为 100%,并且应用程序看到速率限制(429 错误代码),则可能需要更多 RU/s。 相比之下,如果此指标值较低且没有速率限制,则可能存在优化和纵向缩减 RU/s 的空间。 详细了解如何解释和调试代码 429 速率限制错误

由于从主要区域写入复制流量,以及次要服务器上的任何读取流量,Normalized RU Consumption 指标反映了次要区域中使用的 RU/s。

开始使用

默认情况下,为在 2024 年 9 月 25 日之后创建的所有 Azure Cosmos DB 帐户启用动态缩放。 希望为其旧帐户启用此功能的客户可以通过 Azure PowerShell/CLI/Rest API 或从 Azure 门户大功能窗格以编程方式执行此操作,如下所示:

  1. Azure 门户中,导航到你的 Azure Cosmos DB 帐户。

  2. 导航到“功能”页。

  3. 找到并启用“动态缩放(按区域和按分区自动缩放)”功能。

    Azure 门户中的“动态缩放(按区域和按分区自动缩放)”功能的屏幕截图。

    重要

    该功能在帐户级别启用,因此帐户中的所有自动缩放容器和分片吞吐量数据库都将自动应用此功能。 启用此功能不会影响使用手动吞吐量的帐户中的资源。 需要将手动资源更改为自动缩放才能利用动态缩放。 启用此功能不会造成停机或性能影响。 此功能不适用于无服务器帐户。