Cosmos Write 批量执行返回 429 错误

Cosmos Write Returning 429 Error With Bulk Execution

我们有一个利用微服务方法的解决方案。我们的一项微服务负责将数据推送到 Cosmos。我们的 Cosmos 数据库使用无服务器配置,限制为 5,000 RU/s。

我们插入 Cosmos 的数据如下所示。有 10 列,我们正在推送一个包含 5,807 行此数据的批次。

Id CompKey Primary Id Secondary Id Type DateTime Item Volume Price Fee
1 Veg_Buy csd2354csd dfg564dsfg55 Buy 30/08/21 Leek 10 0.75 5.00
2 Veg_Buy sdf15s1dfd sdf31sdf654v Buy 30/08/21 Corn 5 0.48 3.00

我们正在从多个来源检索数据,对其进行规范化,然后将数据作为一次批量执行发送到 Cosmos。检索过程每小时进行一次。我们知道,我们每小时使用已检索到的数据向 Cosmos 数据库添加一次峰值,然后停止发送数据,直到下一个检索周期。那么,如果这个高峰是问题所在,那么对于这种情况有什么补救措施?

任何人都可以阐明我们 should/need 如何解决这个问题吗?也许我们在创建 Cosmos 数据库时缺少设置,或者这可能与分区有关?

您基本上可以通过查看 Azure 门户中发布的指标来确定这些事情。这个文档是一个很好的起点,Monitor and debug with insights in Azure Cosmos DB.

特别是我会查看标题为通过分区键范围

确定吞吐量消耗的部分

如果您不处理热分区键,您可能需要查看限制写入的选项。这可能包括修改您的批量大小并将写入操作放在 while..loop 上,使用一秒计时器,直到 RU/s 消耗等于 5000 RU/s。您还可以考虑进行 queue-based 负载均衡并在 Cosmos 前面的 queue 上进行写入并将它们流式传输。