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 上进行写入并将它们流式传输。
我们有一个利用微服务方法的解决方案。我们的一项微服务负责将数据推送到 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 上进行写入并将它们流式传输。