Kafka中的ISR(In-Sync Replicas)列表是由Controller負責維護和更新的。ISR列表包含了當前與Leader副本保持同步的副本列表。當一個副本與Leader副本保持同步時,它會被添加到ISR列表中;當一個副本與Leader副本失去同步時,它會從ISR列表中移除。
Controller會定期檢查每個副本與Leader副本的同步狀態(tài),如果發(fā)現(xiàn)有副本與Leader副本失去同步,則它會觸發(fā)重新分配副本的操作,將失去同步的副本從ISR列表中移除,并選擇新的副本加入ISR列表。
ISR列表的維護和更新是通過Controller與Broker之間的協(xié)調和通信來完成的。Controller會周期性地向Broker發(fā)送請求,檢查副本的同步狀態(tài),并根據(jù)檢查結果更新ISR列表。這樣可以保證ISR列表中的副本始終與Leader副本保持同步,確保數(shù)據(jù)可靠性和一致性。