首页 > 解决方案 > CosmosDB:使用时间触发的 FunctionApp 优化 RU?

问题描述

我们有一个 FunctionApp,它每 6 分钟在 CosmosDb 中插入大约 8k 个文档。目前我们将 Cosmos 设置为自动缩放,但由于我们的 RU 非常可预测,我觉得我们可以节省一些钱,因为它非常昂贵。我发现可以手动设置吞吐量,根据这篇文章,我可以使用计时器减少/增加 RU。但是现在我想知道这是否是一个好主意,因为我们的时间间隔很短,即使我正确地为 FunctionApp 计时(容易出错?)也可能有 3 分钟的时间可以降低吞吐量。另一件事是手动吞吐量成本降低了 50% 的 RU。

您认为,是否值得实施一个时间触发的 FunctionApp 来增加/减少吞吐量,或者在容易出错等方面不是一个好主意?你有这方面的经验吗?

标签: azureoptimizationazure-functionsazure-cosmosdb

解决方案


具有手动吞吐量的计时器可能会为您节省资金,因为吞吐量按每小时 RU/s 的最高量计费。由于您的工作负载需要每 6 分钟扩展一次,因此您的成本是该小时内最高的 RU/s。鉴于自动缩放要贵 50%,您可以通过手动缩放来节省费用。

但是,如果您能够将此数据流式传输到 Cosmos 而不是批处理,您将节省更多。吞吐量是每秒测量的。您能够在更长的时间内分摊使用量越多,在任何给定时间点所需的吞吐量就越少。因此,如果您能够使用消息队列并在 Cosmos 前进行负载均衡并将更改流式传输,您将获得更好的整体吞吐量利用率,从而降低总成本。当然,您需要评估使用消息队列来执行此操作的成本,但总的来说,流式传输比批处理更具成本效益。


推荐阅读