我目前正在研究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运行连续读取该队列并拆分数据/创建任务。