Azure(持久)函数 - 管理并行性

Joe*_*Eng 5 azure azure-functions azure-durable-functions

我发布这个问题是为了看看我是否正确理解 Azure Functions 中的并行性,尤其是 Durable Functions。

最近使用 az cli 将设置最大并行度的功能添加到 Azure Functions:https : //github.com/Azure/azure-functions-host/issues/1207

az resource update --resource-type Microsoft.Web/sites -g <resource_group> -n <function_app_name>/config/web --set properties.functionAppScaleLimit=<scale_limit>
Run Code Online (Sandbox Code Playgroud)

我已将此应用于我的函数应用程序,但我不确定它如何与持久函数的 MaxConcurrentOrchestratorFunctions 和 MaxConcurrentActivityFunctions 设置一起使用。

以下是否会导致全局最多 250 个并发活动功能?

  • 功能应用规模限制:5
  • MaxConcurrentOrchestratorFunctions:5
  • MaxConcurrentActivityFunctions:10

Jay*_*SFT 5

参考您共享的限制缩放的链接,此functionAppScaleLimit将帮助您指定函数的最大实例数。现在来到MaxConcurrentOrchestratorFunctions :设置可以在单个主机实例上并发处理的协调器函数的最大数量,MaxConcurrentActivityFunctions设置可以在单个主机实例上并发处理的活动函数的最大数量。参考这个

现在,我正在解释 MaxConcurrentOrchestratorFunctions 的作用,这将帮助您理解它是如何工作的:

MaxConcurrentOrchestratorFunctions控制在任何给定时间可以将多少个 Orchestrator 函数加载到内存中。如果将并发设置为 1,然后启动 10 个 Orchestrator 函数,则一次只会将一个函数加载到内存中。请记住,如果编排器函数调用活动函数,编排器函数将在等待响应时从内存中卸载。在此期间,另一个协调器功能可能会启动。其效果是,您将有多达 10 个协调器函数以交错方式运行,但实际上一次应该只有 1 个函数在执行代码。

此功能的动机是限制 Orchestrator 代码使用的 CPU 和内存。它对于实现任何类型的单例模式都没有用。如果您想限制活动编排的数量,那么您将需要实现这一点。


Lea*_*One 1

您的活动函数的全局最大值为 50。这是基于 指定的 5 个应用程序实例functionAppScaleLimit和 指定的 10 个活动函数MaxConcurrentActivityFunctions。Orchestrator 函数执行次数和活动函数执行次数之间的关系完全取决于您的具体实现。您可以有 1-1,000 个编排,生成 1-1,000 个活动。无论如何,您建议的设置将确保在单个函数实例上同时运行的编排和活动不会超过 5 个。