1.kafka中有多个broker,其中一个broker会被选举为controller
2.选举的方式是所有broker在zookeeper创建/controller临时节点,创建成功的broker成为controller
controller的数据如下
{"version":1,"brokerid":2,"timestamp":"1604740076796"}
同时会创建controller_epoch节点,节点数据是一个整数,记录选举轮次
3.controller的职责
监听分区相关的变化
(1)监听/admin/reassign_partitions节点处理分区重分配
(2)监听/admin/prefrered-replica-election节点,处理优先副本选举
(3)/isr_change_notification,处理ISR集合的变化
监听主题相关的变化
(1)监听/brokers/topics,处理主题增减
(2)监听/admin/delete_topics,处理删除主题
监听broker相关的变化
监听/broksers/ids节点,处理brokers的变化
启动并管理分区状态机和副本状态机
更新集群元数据