本節書摘來自華章計算機《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叢集。