kafka controller
1 分区和副本
一个topic有多个分区,
一个分区有多个副本,
副本负责保证分区的高可用,
副本中有一个为leader,
发送消息和接受消息都是从leader上进行的。
2 controller
controller只在一个broker上,
broker启动时会向ZK创建临时序号节点,最小的序号的broker作为controller。
- controller负责选举leader
leader本身在Isr的第一位。
当leader挂掉后,controller会将Isr里的下一个副本选举为新的leader。
- 当Isr发生变化时,会通知所有的broker更新元数据信息。
比如添加新的broker或者有broker挂掉了,这时候controller会去通知所有broker更新数据。
- 当出现新分区时通知所有broker
topic增加分区数时,controller也会发起通知,告诉所有broker分区数增加。
2.1 Isr
记录所有可选举为leader的副本。