本节书摘来自华章计算机《storm企业级应用:实战、运维和调优》一书中的第2章,第2.5节,作者:马延辉 陈书美 雷葆华著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
在storm中使用zookeeper主要用于完成storm集群各节点的分布式协调工作,一是存储客户端提供的topology任务信息,nimbus负责将任务分配信息写入zookeeper,supervisor从zookeeper上读取任务分配信息;二是存储supervisor和worker的心跳(包括它们的状态),使得nimbus可以监控整个集群的状态,从而重启一些挂掉的worker;三是存储整个集群的所有状态信息和配置信息。由于zookeeper在storm集群中的重要性,本章详细介绍了zookeeper的安装。
storm使用zeromq传送消息,这就消除了中间的排队过程,使得消息能够直接在任务自身之间流动。在消息的背后,是一种用于序列化和反序列化storm的原语类型的自动化且高效的机制。storm使用zookeeper协调集群时,由于zookeeper并不用于传递消息,所以storm给zookeeper带来的压力相当低。大多数情况下,单个节点的zookeeper集群足够胜任,不过为了确保故障恢复或者部署大规模storm集群,可能需要更大规模节点的zookeeper集群。