Kafka中的ISR(In-Sync Replicas)列表是由Controller负责维护和更新的。ISR列表包含了当前与Leader副本保持同步的副本列表。当一个副本与Leader副本保持同步时,它会被添加到ISR列表中;当一个副本与Leader副本失去同步时,它会从ISR列表中移除。
Controller会定期检查每个副本与Leader副本的同步状态,如果发现有副本与Leader副本失去同步,则它会触发重新分配副本的操作,将失去同步的副本从ISR列表中移除,并选择新的副本加入ISR列表。
ISR列表的维护和更新是通过Controller与Broker之间的协调和通信来完成的。Controller会周期性地向Broker发送请求,检查副本的同步状态,并根据检查结果更新ISR列表。这样可以保证ISR列表中的副本始终与Leader副本保持同步,确保数据可靠性和一致性。