在 Azure 中托管不一致的工作负载

在 Azure 中托管不一致的工作负载

我们公司有很多算法需要处理大型数据集。运行这些算法的时间从几分钟到几小时不等。它们还需要每周多次或每月一次临时运行。我们希望通过事件(例如 Azure blob 存储中的文件上传或 API 调用)来触发这些算法。

为了解决这个问题,我开始研究 Azure 中的任务排队处理。起初,我认为 Azure 函数可能是一个很好的解决方案,因为它是按使用付费的。问题是它们不适合长时间运行的操作。因此,我开始在其他地方寻找。我发现了两个相当不错的替代方案,即 Azure WebJobs 或 Azure Kubernetes Services 中的作业。它们的问题在于,即使它们上没有运行任何内容,它们仍然需要一个活动的服务器。对于每月只需运行一次的任务来说,这可能非常昂贵。

我的问题是:Azure 中是否存在一种解决方案,用于托管长时间运行的作业,而不需要全天候运行的专用服务器?

答案1

将作业提交组件与处理它们的工作人员分开。提交可能与 Azure 函数和队列一样实现,将输入上传到某个存储并指向该存储。该功能的一部分是从零开始扩展工作人员,可能通过 VM 规模集实现。

如果不使用现有的作业调度系统,可能需要进行一些开发工作。

或者,花费一直运行 Kubernetes 的成本。是的,AKS 需要运行至少一个节点。这可能是值得的,特别是如果它还运行其他容器应用程序。

答案2

John 建议的另一种解决方案可能是使用 Azure Spot VM:https://azure.microsoft.com/en-us/services/virtual-machines/spot/

相关内容