一个正常运行的Storm集群应该有一个nimbus和一个或多个supervisor。
还有另一个重要的节点是Apache zookeeper,用于nimbus和supervisor之间的协调。
现在让我们来仔细看看Apache Storm的工作流:
1.最初,nimbus等待topology提交
2.一旦提交了topology,nimbus将处理topology来收集所有的执行任务和任务执行的顺序。
3.然后,nimbus将均匀地把任务分配给所有可用的supervisor。
4.所有的supervisor定时的会向nimbus发送心跳告知自己是否还正常健康的运行。
5.当一个supervisor挂掉或者不发送心跳到nimbus时,nimbus会将挂掉的supervisor的任务委派给其他正常运行的supervisor。
6.当nimbus自身挂掉时,supervisor会继续执行已经分配给自己的任务,此时在执行的任务不受nimbus挂掉的影响。
7.一旦所有的任务都完成后,supervisor会等待新的任务。
8.同时,服务监控工具会重新启动已经挂掉的nimbus。
9.重新启动的nimbus将继续从其挂掉的地方开始工作。
同样,挂掉的supervisor也可以自动重新启动。
既然nimbus和supervisor都可以通过监控工具自动的被启动并在他们挂掉的地方接着运转,因此storm能够保证所有的任务至少能被被处理一次。
10.一旦处理完所有的topology,nimbus就等待一个新的topology,同样,supervisor也会等待新的任务。
默认情况下,storm集群有两种模式:Local mode 和 Production mode
Local mode−此模式用于开发、测试和调试,因为它是看到所有的topology组件一起工作的最简单的方法。
在这种模式下,我们可以调整参数,使我们能够看到我们的topology在不同的storm配置环境中运行。
在本地模式下,storm topology运行在本地机器的单个JVM上。
Production mode−在这种模式下,我们提交topology到正常工作的storm集群上。生成环境的storm集群会一直运行下去,除非关闭。