ar:Kafka分区中的所有副本统称
isr:包含leader和follower
步骤
1.broker启动后在zk(/kafka/brokers/ids/)中注册,放的是broker中config/server.properties里的broker.id值;
2.在zk(/kafka/controller)中注册Controller,Controller谁先注册,谁说了算;由Controller 监听brokers节点变化;
3.Controller决定Leader选举。选举规则:在isr中存活为前提,按照AR中排在前面的优先。例如 ar[1,0,2], isr [1,0,2],那么leader 就会按照1,0,2的顺序轮询;
4.Controller将选举出的leader和isr等信息上传到ZK(/brokers/topics/主题);
5.其他Contorller从zk同步相关信息,防止先注册的Controller挂了;
6.先注册的Controller监听(/kafka/brokers/ids/)节点变化;其他的Controller监听(/brokers/topics/主题)变化;
7.如果leader节点挂了,Controller选举新的Leader(在 isr中存活为前提,按照 AR中排在前面的优先);
8.Contoller更新ZK(/brokers/topics/主题)的leader和isr等信息;
9.其他Contorller从zk同步相关信息。