在 Azure Cosmos DB 中优化多区域成本

适用对象: NoSQL MongoDB Cassandra Gremlin

可随时对 Azure Cosmos DB 帐户添加和删除区域。 在与帐户关联的每个区域中会保留为各种 Azure Cosmos DB 数据库和容器配置的吞吐量。 如果每小时预配的吞吐量(即,跨所有数据库和容器为 Azure Cosmos DB 帐户配置的每秒请求单位数 [RU/秒] 总和)为 T,并且与数据库帐户关联的 Azure 区域数是 N,则对于给定小时,Azure Cosmos DB 帐户的总预配吞吐量等于 T x N RU/秒。

具有单个写入区域的预配吞吐量和具有多个可写区域的预配吞吐量在成本上可能会有所不同。 有关详细信息,请参阅 Azure Cosmos DB 定价

多个写入区域的成本

在多区域写入系统中,可用于写入操作的净 RU/秒会增加 N 倍,其中 N 是写入区域数。 与单区域写入不同,每个区域现在都可写并且支持冲突解决。 从成本规划角度来看,若要在中国范围内执行 M RU/秒的写入,需要在容器或数据库级别预配 MRU/秒。 随后可以添加任意多个区域并将它们用于写入以在中国范围内执行 M RU/秒写入。

示例

假设你在单区域写入场景中有一个容器。 该容器的预配吞吐量为 10K RU/秒,且本月存储了 0.5 TB 的数据。 现在,假设你添加了另一个具有相同存储和吞吐量的区域,并且你希望能够从你的应用写入到这两个区域中的容器。

此示例详细介绍了新的每月总消耗量:

项目 使用情况(每月) 费率 每月成本
中国北部(单个写入区域)容器的吞吐量账单 10K RU/秒 * 24 小时 * 31 天 每小时每 100 RU/秒 0.051 元 3,794.4 元
中国北部和中国东部这 2 个区域(多个写入区域)中容器的吞吐量帐单 2 * 10K RU/秒 * 24 小时 * 31 天 每小时每 100 RU/秒 0.102 元 15,177.6 元
中国北部容器的存储帐单 0.5 TB(或 512 GB) 2.576 元/GB 1318.92 元
2 个区域(中国北部和中国东部)内的容器的存储帐单 2 * 0.5 TB(或 1,024 GB) 2.576 元/GB 2637.83 元

注意

此示例假定一个月内为 730 小时。

按每个区域提高吞吐量利用率

如果利用率低下,可采取措施,通过使用读取区域中的更改源来最大限度地利用读取区域中的 RU/秒。 或者,如果利用过度,可移动到另一个辅助区域。 例如,一个或多个未充分利用的读取区域被视为效率低下。 你需要确保先在写入区域中优化预配吞吐量(RU/秒)。

对于不包括大型查询的大多数情况,写入成本高于读取成本。 保持均衡的利用率可能很有挑战性。 总的来说,监视区域中消耗的吞吐量,并按需添加或删除区域,以缩放读取和写入吞吐量。 确保了解对部署在同一区域的任何应用的延迟的影响。