🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 守护进程容错 Storm 有几个不同的守护进程. 调度 workers 的 Nimbus, 启动和杀死 workers 的 supervisors, 可以访问日志的 log viewer(日志查看器)以及显示集群状态 UI. ## 当一个 worker 挂掉时会发生什么? 当一个 worker 挂掉时, supervisor 将会重启它. 如果在启动它时继续发生故障并且没有发送 hearbeat(心跳)给 Nimbus, 那么 Nimbus 将会重新调度 worker. ## 当一个 node(节点)挂掉时会发生什么? 分配给该机器的 task(任务)将超时, Nimbus 将这些 task(任务)重新分配给其他机器. ## 当 Nimbus 或 Supervisor 挂掉时会发生什么? Nimbus 和 Supervisor 守护进程是为 fail-fast(快速失败)(遇到任何意外情况时进程自毁)和无状态(所有状态都保存在 Zookeeper 或磁盘上)而设计的. 像 [部署 Storm 集群](Setting-up-a-Storm-cluster.html) 中描述的一样, Nimbus 和 Supervisor 守护进程必须使用 daemontools 或 monit 工具进行监督. 所以如果 Nimbus 或 Supervisor 守护进程挂掉后, 它们会像什么都没发生一样重启. 最值得注意的是, 没有 worker 进程受到 Nimbus 或 Supervisors 挂掉的影响. 这与 Hadoop 相反, 如果 JobTracker 挂掉, 所有正在运行的 job 作业都将丢失. ## Nimbus 是单点故障的吗? 如果你失去了 Nimbus 节点, workers 仍然会继续工作. 此外,supervisors 如果挂掉, 将继续重新启动 workers. 但是,如果没有 Nimbus,worker 在必要时不会重新分配给其他机器(如失去 worker 机器). Storm Nimbus 自 1.0.0 以来是 highly available(高可用的). 更多信息请参阅 [Nimbus HA 高可用设计](nimbus-ha-design.html) 文档. ## Storm 是如何保证数据处理的? Storm 提供了保证数据处理的机制, 即使节点挂掉或 messages(消息)丢失. 更多细节请参阅 [保证消息处理](Guaranteeing-message-processing.html).