Apache Storm消息传递实现MPI

问题描述

根据Storm的MPI实现,工作人员管理与其他工作人员的连接并维护任务之间的映射。另外,传输会接收一个任务ID和一个元组,并序列化该元组并将其放入“传输队列”。

问题是,是否存在一种组织调度的方式,以使操作员的某些任务根据应用程序的拓扑在给定的时间仅与后续操作员的某些任务进行通信(ZeroMQ可能会这样做吗? )。

解决方法

Q ”如果有一种组织计划的方式,那么操作员的某些任务根据应用程序的拓扑在给定的时间仅与后续操作员的某些任务进行通信(ZeroMQ可能会做这样的事情吗?)。”

显然可以,
它确实可以为灵活,灵活地创建信令/消息元平面基础设施,并在过去的12余年中不断改进自身年。

@HristoIlliev附加评论的URL详细信息,Apache-Storm自身报告已将ZeroMQ层用于其自身的服务 * [在0.8.0版中,不幸的是,几乎所有实现(源代码)链接死在那里]

  • 分布式模式 的实现使用ZeroMQ代码
  • 本地模式 的实现使用内存中的Java队列(这样就可以在本地轻松使用Storm而不需要安装ZeroMQ)代码 ...
  • 任务在内存ZeroMQ端口上侦​​听来自虚拟端口代码的消息

因此,您的问题中与拓扑相关的部分与在“外部” Apache-Storm架构中已经就此主题做出的决定有关。

任务负责消息路由。元组被发送到直接流(在其中指定了任务ID)或常规流。在直接流中,仅当该螺栓订阅该直接流时才发送消息。在常规流中,流分组功能用于确定将元组发送到的任务ID。

由于FORTRAN作业开始在第一个HPC分布式基础架构上运行,因此MPI对于以HPC为重点的计算生态圈也是如此。由于大多数HPC计算问题都“简单地”扩展到了计算硬件的较大占用空间,因此MPI的重点更多地放在了这种统一扩展的效率上,而不是访问自适应的,几乎即席设置的对角消息传递基础结构,专用ZeroMQ可扩展形式化正式通信原型模式的分层拓扑,因此每个工具都专注于其他因素。

如果您想阅读更多有关ZeroMQ的内容,this answer可能有助于快速了解核心基础概念。