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

可随时对 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/秒的写入操作,需要在容器或数据库层配置 M RU/秒。 然后,您可以根据需要添加任意数量的区域,并使用它们在全球范围内执行 M RU/秒的写入操作。

Example

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

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

每月使用情况
单个写入区域中容器的吞吐量帐单 10K RU/s * 730 hours
多个写入区域(两个)中容器的吞吐量帐单 2 * 10K RU/s * 730 hours
单一写入区域中的容器存储费用账单 0.5 TB (or 512 GB)
两个写入区域中容器的存储帐单 2 * 0.5 TB (or 1,024 GB)

注释

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

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

如果利用率低下,您可以采取措施,使用读取区域中的变更馈送来最大化 RU/秒 的利用率。 或者,如果当前从属节点资源过度利用,可以移动到另一个从属节点。 例如,一个或多个未充分利用的读取区域被视为效率低下。 你需要确保先在写入区域中优化预配吞吐量(RU/秒)。

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