gpt4 book ai didi

azure - 控制持久函数中扇出/扇入模式的最大并行度

转载 作者:行者123 更新时间:2023-12-04 12:38:20 26 4
gpt4 key购买 nike

在 Azure Durable Functions 上实现扇出/扇入模式时,是否有办法控制最大并行度?

我目前正在实现此模式来执行数据加载过程,但我遇到了 DTU 的数据库限制,因为操作数量太多,数据库无法处理。

我正在考虑的解决方案涉及使用以下属性:

  • maxConcurrentActivityFunctions
  • maxConcurrentOrchestratorFunctions

( host.json ) 文件与以下内容结合使用:

前 2 个属性应限制每个主机的并行函数执行数量,而 WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 应限制主机数量。

这是否是限制最大并行度的正确方法?

最佳答案

您描述的方法是全局限制最大并行度的最佳方法。请注意,在撰写本文时,WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT 并不总是可靠。今年晚些时候,该团队计划使其成为一个完全可靠的设置。

这可能不适用于您的情况,但为了其他发现此问题的读者的利益,我又添加了一件需要考虑的事情。如果您只有一个编排,您可以使用一种简单的 C# 技术来限制最大并行度,即执行如下操作:

static async Task FanOutFanInAsync(
string functionName,
object[] workItems,
int maxParallelism)
{
var inFlight = new HashSet<Task>();
foreach (var item in workItems)
{
if (inFlight.Count > maxParallelism)
{
Task finished = await Task.WhenAny(inFlight);
inFlight.Remove(finished);
}

inFlight.Add(ctx.CallActivityAsync(functionName, item));
}

await Task.WhenAll(inFlight);
}

这将允许您限制单个编排实例一次扇出的事件函数数量。

关于azure - 控制持久函数中扇出/扇入模式的最大并行度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58789750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com