作者: 大圓那些事 | 文章可以轉載,請以超鏈接形式標明文章原始出處和作者信息
網址: http://www.cnblogs.com/panfeng412/archive/2012/12/16/storm-related-technique-summary.html
Storm作為一個開源的分布式實時流計算框架,其內部實現使用了一些常用的技術,這里是對這些技術及其在Storm中作用的概括介紹。以此為基礎,后續再深入了解Storm的內部實現細節。
1. Zookeeper集群
Zookeeper是一個針對大型分布式系統的可靠協調服務系統,其采用類似Unix文件系統樹形層次結構的數據模型(如:/zoo/a,/zoo/b),節點內可存儲少量數據(<1M,當節點存儲大數據量時,實際應用中可能出現同步問題)。
Zookeepr的高可靠性服務是通過配置Zookeeper集群實現的,官方建議Zookeeper集群至少包含3個節點,每個節點上存儲一份數據,主節點掛掉后可以重新選取一個節點作為主節點。只要保證集群內有一半以上的節點存活,集群就可對外提供服務。
Zookeeper支持的操作類型有:
(1)創建樹節點znode;
(2)刪除樹節點znode;
(3)讀取樹節點znode的內容和其子節點的內容;
(4)當節點內容發生變化或子節點增刪時觸發消息通知更新消息;
(5)支持瞬時節點(EPHEMERAL),創建節點的進程退出后節點自動被刪除。
Storm中使用Zookeeper主要用於Storm集群各節點的分布式協調工作,具體功能如下:
(1)存儲客戶端提供的topology任務信息,nimbus負責將任務分配信息寫入Zookeeper,supervisor從Zookeeper上讀取任務分配信息;
(2)存儲supervisor和worker的心跳(包括它們的狀態),使得nimbus可以監控整個集群的狀態, 從而重啟一些掛掉的worker;
(3)存儲整個集群的所有狀態信息和配置信息。
關於Storm在Zookeeper的詳細目錄結構,可參考這里。
2. Thrift服務框架
3. ZeroMQ消息隊列
4. Java序列化
5. 總結
以上只是對Storm中所使用到的Zookeeper集群、Thrift服務框架、ZeroMQ消息隊列、Java序列化技術及其在Storm中的應用情況的簡單介紹,后續再進一步結合Storm的源碼進行深入分析。以上內容,如果不對之處,歡迎大家指正。