我有一个关于缩放 Azure 持久函数的问题。
我正在编写一个模拟引擎,它执行大量(1000 个)计算密集型任务(复杂数学),这些任务需要相对较短的时间,每个大约 10 秒。
我正在使用 DurableOrchestration 创建“活动”函数的扇出。
在我运行模拟的那一刻,它会将任务排队并根据我下面的配置为每个 vm 运行 2 个任务。
{
"durableTask": {
"maxConcurrentActivityFunctions": 2,
"maxConcurrentOrchestratorFunctions": 10
}
}
目前,这扩展了大约 20-30 多个虚拟机,并且需要一段时间才能运行,我的测试需要几分钟。通过查看历史记录表,我猜它正在慢慢增加 VM 的数量)。
我真正想要的是让我的函数位于指定数量的 vm 上,比如 200,并在几秒钟内运行模拟。
我正在制定消费计划,这目前是否可行,或者可以通过其他应用计划实现吗?
只是想,也许一个好主意是创建某种带有 Activity 函数调用集合的 ActivityBatch 类,您可以在其中指定每个任务将花费多长时间的近似值和所需的运行时间。
通过这种方式,Azure 可以计算需要将函数传播到多少个虚拟机,以便尝试满足用户的要求。
提前致谢