一個topic可以有多個分區,多個副本(一般副本數量不大於分區數量)。一份分區下有多個副本,
ISR表示目前消息量與leader相差不多的副本集合,這是整個副本集合的一個子集”。怎么去理解
可用和相差不多這兩個詞呢?具體來說,ISR集合中的副本必須滿足兩個條件
- 副本所在節點必須維持着與zookeeper的連接
- 副本最后一條消息的offset與leader副本的最后一條消息的offset之間的差值不能超過指定的閾值
(replica.lag.time.max.ms) replica.lag.time.max.ms:如果該follower在此時間間隔內一直沒有追
上過leader的所有消息,則該follower就會被剔除isr列表 - ISR數據保存在Zookeeper的/brokers/topics//partitions//state
節點中
follower副本把leader副本LEO之前的日志全部同步完成時,則認為follower副本已經追趕上了leader
副本,這個時候會更新這個副本的lastCaughtUpTimeMs標識,kafk副本管理器會啟動一個副本過期檢
查的定時任務,這個任務會定期檢查當前時間與副本的lastCaughtUpTimeMs的差值是否大於參數
replica.lag.time.max.ms 的值,如果大於,則會把這個副本踢出ISR集合