首页 > 解决方案 > 将 Azure Batch 用于非并行工作?有更好的选择吗?

问题描述

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

无论如何,我有使用 Azure Batch 的经验,所以一开始我在考虑 Azure Batch。但我不确定这对我的场景是否有意义,因为这项工作无法扩展到多台机器。在节点上拥有一个具有单个节点和单个 vm 的池是否有意义?当我需要做这项工作时,Azure Web 作业会将作业排入队列,并且池的大小会自动从 0 变为 1?

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

谢谢!

标签: azure-virtual-machineazure-batch

解决方案


对于 Azure Batch,单个池中单个 VM 的方案是有效的。但是,如果您可以为工作负载预配适当的 VM 大小, Azure 容器实例Azure Functions似乎更合适。

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


推荐阅读