AR(Assigned Replicas)分配的副本:
一个分区里面所有的副本,不区分leader和follower。
ISR(In-Sync Replicas)同步的副本:
能够和leader保持同步的follower+leader本身组成的集合。
OSR(Out-Sync Replicas)未同步的副本:
不能和leader保持同步的follower集合。
它们之间的关系:AR = ISR + OSR
某个topic的replication-factor为N,则这个topic下的每个分区下都有一个leader和(N-1)个follower。
每个follower的数据都是从leader同步过来的,是follower主动拉取leader的数据。
follewer只是数据的副本,只能保证数据的可恢复性。
ISR机制:
ISR(In-Sync Replicas)是一个副本列表,存储的是和leader数据一致的副本。
确定一个副本是否能在ISR列表中,需要两个条件:
follower和leader的同步时间间隔,超过这个时间间隔,就将它从ISR集合中删除掉,进入OSR。
follower和leader的同步数据条数差,超过这个数差,就将它从ISR集合中删除掉,进入OSR。
目前kafka使用第一个条件作为判断依据。第二个条件容易形成无限循环。
OSR中的follower重新进入ISR的条件:
当follower重新同步了leader的数据,就会重新进入到ISR集合中。