gpt4 book ai didi

Azure Durable Functions 扇出规模有限制吗?

转载 作者:行者123 更新时间:2023-12-01 00:20:22 25 4
gpt4 key购买 nike

我有一个持久的函数编排器,它可以扇出到多个事件函数来处理一些工作负载。以下代码是一个示例,其中 Function_2 是扇出以处理工作负载的代码:

public static async Task Run(DurableOrchestrationContext ctx)
{
// get a list of N work items to process in parallel
object[] workBatch = await ctx.CallActivityAsync<object[]>("Function_1");

var parallelTasks = new List<Task<int>>();
for (int i = 0; i < workBatch.Length; i++)
{
Task<int> task = ctx.CallActivityAsync<int>("Function_2", workBatch[i]);
parallelTasks.Add(task);
}

//How many instances of Function_2 will handle the workload?
await Task.WhenAll(parallelTasks);

// aggregate all N outputs and send result to Function_3
int sum = parallelTasks.Sum(t => t.Result);
await ctx.CallActivityAsync("Function_3", sum);
}

我的问题是,为了处理这项工作,将生成多少个 Function_2 实例。我知道这取决于任务的数量,所以假设我有 5000 个任务。我怀疑它会产生 5000 个实例,但上限是多少,我可以控制它吗?我多次通读文档,但无法找到有关此主题的信息。我知道根据定义,我不应该关心它,因为它是为我处理的,但是我的任务可能会使它们都依赖的支持资源过载。

最佳答案

在幕后,每个 CallActivity 调用都会成为存储队列中的一条消息,因此您的示例中有 5000 条消息。这些消息将被 Function App 使用。

它将并行运行多个调用,但当然不是同时运行。您不会在文档中的任何位置看到确切的数字,因为它们将由内部比例 Controller 逻辑定义。它们还取决于每个事件调用的持续时间、CPU 使用率等。

结果也可能随着时间的推移而改变。

因此,您的情况可能会有所不同,您应该测试您的场景。

关于Azure Durable Functions 扇出规模有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49178517/

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