怎么决定谁是Controller?
Kafka的Controller管理我们的kafka集群的时候是借助zookeeper来进行的,我们所有的broker启动的时候都会去zookeeper进行创建目录,谁创建成功谁是Controller
Controller又做了什么事情?
controller 抢占成功之后,就会去zk进行监控很多目录 例如 /broker/ids
用来感知 broker上下线,/broker/topics
创建主题,
/admin/reassign_partitions
分区重分配等,然后 所有的broker都会去/broker/ids
下进行注册自己的目录,这个时候controller就可以感知到我们上线了多少台机器和下线了什么机器,这个时候我们的controller收到了之后就会把这些元数据分发给其他的 follower broker,当更新的时候 controller也会把元数据发送给 其他的 broker ,当监听的哪些 目录有更新的时候,会把这些元数据发送给follower broker