这里会有一个问题就是我们部署了zookeeper,那他是怎么结合起来的?
首先,
1.broker启动后会在zookeeper注册。
2.然后broker中会有controller,controller谁先注册谁成为leader。
3.这个controller的作用是监听brokers/ids。
4.监听完成之后就要选取leader。这里讲一下选取规则:在isr中存活为前提,然后选取AR中排在前面的有限,例如ar[1,0,2],isr[1,0,2],那么leader就会按照1,0,2的顺序进行轮询。
5.controller会将leader信息和isr信息上传到zookeeper里面。
6.然后其他节点controller同步相关信息(这里为什么要这么做),是因为controller节点(leader)挂了,其他的controller直接上位。
7.如果leader挂了怎么办,controller监听到了ids,然后重新选举leader,将新的leader信息以及isr信息上传。这是broker的整个工作流程。
接着回答一下zookeeper和kafka怎么联系起来的,这是broker启动会将自己的注册信息上传到zookeeper,然后controller监听变化,以及选举完成之后,将leader信息上传上去以及isr信息。