依賴於zookeeper,broker向zk中注冊的信息以json格式保存,其中包括:
1.listener_security_protocol_map:此值指定了該broker與外界通信所用的安全協議類型
2.endpoints:指定broker的服務endpoint列表,每個endpoint指明了傳輸協議類型,broker主機名和端口信息。
3.rack:指定broker機架信息。若設置了機架信息,kafka在分配副本時會考慮把某個分區的多個副本分配在多個機架上,這樣即使某個機架上的broker全部崩潰,也能保證其他機架上的副本可以正常工作
4.jmx_port:broker的JMX監控端口。需要在啟動broker前設置JMX_PORT環境變量。設置JMX端口后各種支持JMX的監控框架(如zabbix)才可以實時獲取kafka提供的各種broker端監控指標。
5.host:broker主機名或ip地址。
6.port:broker服務端口號
7.timestamp:broker啟動時間。
8.version:broker當前版本號
臨時節點,kafka利用zk臨時節點來管理broker生命周期。broker啟動時在zookeeper中創建對應的臨時節點,同時還會創建一個監聽器堅挺該臨時節點的狀態;一旦broker啟動后,監聽器會自動同步整個集群信息到該broker上;而一旦該broker崩潰,它與zookeeper的會話就會失效,導致臨時節點被刪除,監聽器觸發,然后處理broker崩潰的后續事宜。這就是Kafka管理集群及其成員的主要流程。