zookeeper與Kafka的關系


kafka依賴於zookeeper

1.在Kafka的設計中,選擇了使用Zookeeper來進行所有Broker的管理,體現在zookeeper上會有一個專門用來進行Broker服務器列表記錄的點,節點路徑為/brokers/ids

每個Broker服務器在啟動時,都會到Zookeeper上進行注冊,即創建/brokers/ids/[0-N]的節點,然后寫入IP,端口等信息,Broker創建的是臨時節點,所有一旦Broker上線或者下線,對應Broker節點也就被刪除了,因此我們可以通過zookeeper上Broker節點的變化來動態表征Broker服務器的可用性,Kafka的Topic也類似於這種方式。

2.生產者負載均衡
生產者需要將消息合理的發送到分布式Broker上,這就面臨如何進行生產者負載均衡問題。
對於生產者的負載均衡,Kafka支持傳統的4層負載均衡,zookeeper同時也支持zookeeper方式來實現負載均衡。
(1)傳統的4層負載均衡
根據生產者的IP地址和端口來為其定一個相關聯的Broker,通常一個生產者只會對應單個Broker,只需要維護單個TCP鏈接。這樣的方案有很多弊端,因為在系統實際運行過程中,每個生產者生成的消息量,以及每個Broker的消息存儲量都不一樣,那么會導致不同的Broker接收到的消息量非常不均勻,而且生產者也無法感知Broker的新增與刪除。
(2)使用zookeeper進行負載均衡
很簡單,生產者通過監聽zookeeper上Broker節點感知Broker,Topic的狀態,變更,來實現動態負載均衡機制,當然這個機制Kafka已經結合zookeeper實現了。

3.消費者的負載均衡和生產負載均衡類似

4.記錄消息分區於消費者的關系,都是通過創建修改zookeeper上相應的節點實現

5.記錄消息消費進度Offset記錄,都是通過創建修改zookeeper上相應的節點實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM