Kafka-控制器
控制器其实就是一个broker,除了具有一般broker的功能外,还负责分区首领的选举。
集群里第一个启动的broker通过在zookeeper中创建一个临时节点/controller让自己成为控制器。其他broker在启动时会尝试创建这个节点,不过他们会受到一个"节点已存在"的异常。其他broker在控制器节点上创建zookeeper watch 对象,这样可以收到这个节点的变更通知。
当控制器被关闭或者与zk断开连接,临时节点/controller就会消失,其他broker通过watch对象会得到该节点消失的通知,尝试让自己成为新的控制器。
-----《kafka权威指南》