broker是kafka服务端的总称,我们知道,kafka集群是由多个kafka服务实例构成,可以简单理解为每个实例均为一个broker节点,那么对于集群来说,broker是如何工作的呢
可以将Broker 总体工作流程分为下面这几步:
1、在zk中注册brokerid信息;
2、向zk中注册controller,集群中那个kafka实例先注册,谁将成为接下来的“老大”,注意,kafka集群中,每个实例自身都有一个controller,但是需要一个类似leader的controller,负责后续的监听broker的变化;
broker存在的目的在于,监听zk中的ids节点下各个brokerid的变化,比如当监听到某个brokerid从ids节点下移除时,就会做相应的操作
3、controller将节点信息上传到zk,记录着哪台机器的brokerid为本次的controller,比如本次通过节点信息看到,第二个kafka节点为本次的leader controller
4、其他 contorller 从 zk 同步相关信息,上面leader controller选举并注册到zk节点之后,接下来,其他broker上面的controller将要从zk上同步信息了,即各自borker上的controller也要维护一份相应的isr信息,关于这一点,可以在主题下的state里面查看
5、当某个节点挂掉了,或者挂掉后重新上线,leader controller监听到节点信息变化后,将会做出相应的反应,比如,这时候我们强制某个节点下线
这时候再去zk上检查下相关节点数据的变化,首先,ids下面broker1已经被移除了,
controller信息保持不变
主题分区节点下,isr信息发生改变,即ISR中的信息发生了更新



