ZK結構樹
kafka這個是zk上創建的一個節點;這個kafka節點下有admin brokers等子節點
admin節點
brokers節點
brokers節點下有ids和topics節點;這些信息都可以在zk中使用命令查到。
ids就是broker的id;每個id下存放了相對應的broker的基本信息。
topics是存放的topic基本信息。topic下面就是partitons,每個partiton下是這個partiton的基本信息。
consumers節點
臨時節點,集羣關閉就會自動刪除
- ids: 臨時znode,每創建一個consumer實例,就會創建一個consumerid節點
- owners 臨時節點,用來標示partition被哪個consumer消費
- offset 持久節點,用來跟蹤每個consumer目前所消費的partiton中最大的offset
- /consumers/[groupId]/ids/[consumerIdString]
- /consumers/[groupId]/owners/[topic]/[partitionId] -> consumerIdString + threadId
- /consumers/[groupId]/offsets/[topic]/[partitionId] -> offset
config節點
比如動態改動會體現在對應topic的下面;通過zk的get命令即可查到改過的結果
配置:kafka-topic.sh --zookeeper localhost:2181/kafka --create --topic my-topic --partition 1 --replication-factor 1 --config max.message.bytes=64000 --config flush.message=1
修改:kafka-topic.sh --zookeeper localhost:2181/kafka --entity-type topic --entity-name my-topic --alter --add-config max.message.bytes=128000
controller節點
controller:
- broker通過搶注此節點而成爲controller
- 其他broker時刻監控此節點,實現HA
- controller的作用:broker退出時,負責分區首領的選舉
controller_epoch
- 每次重新選舉後,epoch順序遞增,避免“腦裂”
- broker收到包含舊epoch的消息,會自動忽略