使用 Azure Batch 进行非并行工作?有更好的选择吗?

Use Azure Batch for non-parallel work? Is there a better option?

我有一个场景,我们的 Azure 应用服务需要每晚 运行 一个作业。该作业无法扩展到多台机器——它涉及下载一个大数据文件,并对其进行特殊处理(只需要几分钟)。还需要安装特殊软件。机器上需要大量内存来进行计算,因此我想到了 Ev 系列机器之一。由于这些原因,我无法 运行 将作业作为 Azure 应用服务上的 Web 作业,我需要将其委派到其他地方。

无论如何,我有使用 Azure Batch 的经验,所以起初我想到了 Azure Batch。但我不确定这对我的场景是否有意义,因为这项工作无法扩展到多台机器。在节点上有一个只有一个节点和一个虚拟机的池有意义吗?当我需要完成工作时,Azure Web 作业会将作业排入队列,并且池的大小会自动从 0 调整到 1?

还有更好的选择吗?我想看看是否有任何 .NET 库可以启动单个 VM 并开始在其上执行工作,然后在完成后禁用 VM,但我找不到任何东西。

谢谢!

对于 Azure Batch,单个池中单个 VM 的场景是有效的。 Azure Container Instances or Azure Functions 似乎更合适,但是,如果您可以为您的工作负载提供适当的 VM 大小。

如您所建议,您可以结合 Azure Functions/Web 作业将工作排入 Azure 批处理作业。如果您分别在 Azure Batch Pool 或 Job 上设置了 autoscaling or an autopool,则将处理工作并在之后释放计算资源(假设您的设置正确)。