azure-virtual-machine - 将 Azure Batch 用于非并行工作?有更好的选择吗?
问题描述
我有一个场景,我们的 Azure 应用服务需要每晚运行一项工作。该作业无法扩展到多台机器——它涉及下载一个大型数据文件,并对其进行特殊处理(只需几分钟)。还需要安装特殊软件。机器上将需要大量内存来进行计算,因此我在考虑使用 Ev 系列机器之一。由于这些原因,我无法在 Azure 应用服务上将作业作为 Web 作业运行,我需要将其委托给其他地方。
无论如何,我有使用 Azure Batch 的经验,所以一开始我在考虑 Azure Batch。但我不确定这对我的场景是否有意义,因为这项工作无法扩展到多台机器。在节点上拥有一个具有单个节点和单个 vm 的池是否有意义?当我需要做这项工作时,Azure Web 作业会将作业排入队列,并且池的大小会自动从 0 变为 1?
那里有更好的选择吗?我想看看是否有任何 .NET 库来启动单个 VM 并开始在其上执行工作,然后在完成后禁用 VM,但我找不到任何东西。
谢谢!
解决方案
对于 Azure Batch,单个池中单个 VM 的方案是有效的。但是,如果您可以为工作负载预配适当的 VM 大小, Azure 容器实例或Azure Functions似乎更合适。
正如您所建议的,您可以结合 Azure Functions/Web 作业将工作排入 Azure Batch 作业。如果您分别在 Azure Batch 池或作业上设置了自动缩放或自动池,则将处理工作并在之后释放计算资源(假设您有正确的设置)。
推荐阅读
- javascript - 如何在通过 JavaScript 或 jQuery 加载页面时删除 URL 中的某些单词
- r - 使用函数从不同级别的列表中提取数据
- javascript - node.js puppeteer evaluate() 返回 Unexpected 对象。每次抛出 TypeError
- javascript - 在 React 中使用 document.write 从外部脚本编写 HTML 内容
- android - DialogFragment 正在抛出 ClassCastException onAttach
- python - 为什么十进制打印不同的输出?
- python - Qt 和 opencv 应用程序无法在虚拟环境中运行
- javascript - 每次单击“getLatestPrice”按钮时,如何使某些 ChainLink 聚合器提供的数据得到更新?
- installation - Grafana 仪表板的侧面菜单上没有“+”图标
- ios - 如何将 if else 语句添加到按钮和 .sheet?