【问题标题】:CosmosDB: Optimizing RUs with a time triggered FunctionApp?CosmosDB:使用时间触发的 FunctionApp 优化 RU?
【发布时间】:2021-08-24 16:21:08
【问题描述】:

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

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

【问题讨论】:

  • 你看过 Cosmos DB Serverless 模式吗?
  • 由于数据量大,无服务器不合适。此外,一般来说,无服务器并不适合生产环境。但是,是的,我们试过了,但它并没有真正起作用

标签: azure optimization azure-functions azure-cosmosdb


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-01-16
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    相关资源
    最近更新 更多