一个工作的Storm集群应该有一个Nimbus和一个或多个supervisors。另一个重要的节点是Apache ZooKeeper,它将用于nimbus和supervisors之间的协调。
现在让我们仔细看看Apache Storm的工作流程 −
最初,nimbus将等待“Storm拓扑”提交给它。
一旦提交拓扑,它将处理拓扑并收集要执行的所有任务和任务将被执行的顺序。
然后,nimbus将任务均匀分配给所有可用的supervisors。
在特定的时间间隔,所有supervisor将向心跳发送心跳以通知它们仍然运行着。
当supervisor终止并且不向心跳发送心跳时,则nimbus将任务分配给另一个supervisor。
当nimbus本身终止时,supervisor将在没有任何问题的情况下对已经分配的任务进行工作。
一旦所有的任务都完成后,supervisor将等待新的任务进去。
同时,终止nimbus将由服务监控工具自动重新启动。
重新启动的网络将从停止的地方继续。同样,终止supervisor也可以自动重新启动。由于网络管理程序和supervisor都可以自动重新启动,并且两者将像以前一样继续,因此Storm保证至少处理所有任务一次。
一旦处理了所有拓扑,则网络管理器等待新的拓扑到达,并且类似地,管理器等待新的任务。
默认情况下,Storm集群中有两种模式:
本地模式 -此模式用于开发,测试和调试,因为它是查看所有拓扑组件协同工作的最简单方法。在这种模式下,我们可以调整参数,使我们能够看到我们的拓扑如何在不同的Storm配置环境中运行。在本地模式下,storm拓扑在本地机器上在单个JVM中运行。
-
生产模式 -在这种模式下,我们将拓扑提交到工作Storm集群,该集群由许多进程组成,通常运行在不同的机器上。如在storm的工作流中所讨论的,工作集群将无限地运行,直到它被关闭。