Apache Storm - 工作流程


一个工作的 Storm 集群应该有一个 nimbus 和一个或多个 Supervisor。另一个重要的节点是 Apache ZooKeeper,它将用于 nimbus 和管理者之间的协调。

现在让我们仔细看看 Apache Storm 的工作流程 -

  • 最初,nimbus 将等待“Storm Topology”提交给它。

  • 一旦拓扑被提交,它将处理拓扑并收集所有要执行的任务以及任务执行的顺序。

  • 然后,nimbus 会将任务均匀分配给所有可用的管理者。

  • 在特定的时间间隔,所有的supervisor都会向nimbus发送心跳,告知他们还活着。

  • 当一个supervisor死亡并且没有向nimbus发送心跳时,nimbus就会将任务分配给另一个supervisor。

  • 当灵气本身死亡时,主管将毫无问题地完成已经分配的任务。

  • 当所有任务完成后,主管将等待新任务的到来。

  • 与此同时,死掉的nimbus将通过服务监控工具自动重新启动。

  • 重新启动的灵气将从停止的地方继续。同样,死掉的supervisor也可以自动重启。由于 Nimbus 和 Supervisor 都可以自动重启,并且都将像以前一样继续,所以 Storm 保证至少处理一次所有任务。

  • 一旦处理完所有拓扑,nimbus 就会等待新拓扑的到达,类似地,supervisor 也会等待新任务。

默认情况下,Storm 集群中有两种模式 -

  • 本地模式- 此模式用于开发、测试和调试,因为它是查看所有拓扑组件一起工作的最简单方法。在此模式下,我们可以调整参数,使我们能够查看拓扑在不同 Storm 配置环境中的运行情况。在本地模式下,storm 拓扑在本地计算机上的单个 JVM 中运行。

  • 生产模式- 在这种模式下,我们将拓扑提交到工作风暴集群,该集群由许多进程组成,通常运行在不同的机器上。正如 Storm 工作流程中所讨论的,工作集群将无限期地运行,直到关闭。