Azure(耐用)功能-管理并行性

时间:2020-08-24 18:55:18

标签: azure azure-functions azure-durable-functions

我正在发布此问题,以查看我是否正确理解Azure 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>

我已将此功能应用到我的Function App中,但是我不确定这是如何与耐用功能的MaxConcurrentOrchestratorFunctions和MaxConcurrentActivityFunctions设置一起使用的。

以下内容是否会导致全球最多250个并发活动函数?

  • functionAppScaleLimit:5
  • MaxConcurrentOrchestrator函数:5
  • MaxConcurrentActivityFunctions:10

2 个答案:

答案 0 :(得分:0)

参考此{em> functionAppScaleLimit 共享的链接to limit scaling,将帮助您指定函数实例的最大数量。现在进入 MaxConcurrentOrchestratorFunctions :设置可以在单个主机实例上同时处理的最大Orchestrator函数数,以及 MaxConcurrentActivityFunctions 最大活动数可以在单个主机实例上并发处理的函数。请参阅this

现在,我正在解释MaxConcurrentOrchestratorFunctions的功能,这将帮助您了解其工作原理:

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

此功能的目的是限制协调器代码使用的CPU和内存。它对于实现任何类型的单例模式都不会有用。如果要限制活动业务流程的数量,则需要实现此功能。

答案 1 :(得分:0)

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

相关问题