Azure批处理和JobManagerTask的用例



我目前正在研究Azure批处理服务,我对JobManagerTask的正确使用感到困惑…

…以及Azure批处理应用程序的整体架构应该是什么样子。我基于在Github上找到的微软代码示例构建了以下架构。

这些是我当前的应用组件。

App1 - ClusterHead

  • 创建作业(包括自动池)
  • 定义JobManagerTask
  • 在工作站上运行

App2 - JobManagerTask

  • 将输入数据分割成块
  • 将块(工作单元)推送到输入队列
  • 创建任务(CloudTask)

App3 - WorkloadRunner

  • 从输入队列中提取
  • 执行任务
  • 向输出队列推送

Azure存储帐户

  • 链接到Azure批处理帐户
  • 提供输入&输出队列
  • 提供结果表

Azure持久函数

  • 通过使用DurableEntities实现聚合器模式,以便我可以提前访问传入的结果。
  • 由输出队列
  • 中的消息触发。
  • 聚合结果并将实体写入Azure Storage表

问题
  • JobManagerTask使用是否正确?
  • 为什么我想要/需要额外的二进制/应用程序包,封装JobManagerTask?
  • 有人可以给我一个例子,当我应该更喜欢使用JobManagerTask创建作业手动?

提前感谢!

您的示例是如何使用JobManagerTask的示例,尽管正如您提到的,如果生成的数据都是由JobManagerTask生成的并且是固定的,那么将其合并到您提到的ClusterHead中可能是有意义的。在您的情况下,这取决于您是希望拆分和上传数据作为作业的一部分发生,还是在工作站上运行。

JobManagerTasks excel的一个区域是传入的数据是否连续。基本上,如果您有一堆原始输入队列的写入器,您可以让您的JobManagerTask运行连续读取该队列并拆分数据/创建任务。

最新更新