在 Kafka 中,ISR 和 AR 分别代表以下概念:
- ISR(In-Sync Replica): ISR 指的是“同步副本”或“在同步中的副本”。对于每个分区,Kafka 维护了一组 ISR,这是与领导者(Leader)保持同步的副本集合。ISR 中的副本是当前处于同步状态的,它们可以确保在领导者发生故障时快速地选举新的领导者,以维持分区的可用性。ISR 中的副本也是可以被用于读操作的副本。
- AR(Assigned Replica): AR 指的是“分配副本”或“分配中的副本”。对于每个分区,Kafka 维护了一组 AR,这是被分配到该分区但不一定与领导者保持同步的副本集合。AR 包括 ISR 中的副本以及可能正在追赶 Catching Up 的副本。AR 的存在是为了在 ISR 中的副本发生变化时,能够快速选择新的同步副本。
ISR 的伸缩是指 ISR 中的副本数量动态调整的过程。ISR 中的副本数量可以根据集群的状态和副本的同步情况进行自动伸缩。ISR 的伸缩机制涉及到以下两个概念:
- Leader Epoch: 每个分区的领导者都有一个领导者时期号(Leader Epoch)。当 ISR 中的副本数量发生变化时,领导者会增加其领导者时期号,这有助于识别副本是否与当前的领导者保持同步。
- High Watermark: 高水位线(High Watermark)是分区中所有副本共享的一个概念,表示分区中已经成功复制到所有副本的消息的位置。ISR 中的副本必须追赶高水位线以上的消息才能加入到 ISR 中。
ISR 的伸缩过程主要包括以下步骤:
- 当 ISR 中的副本发生变化(增加或减少)时,领导者会增加其领导者时期号。
- 新的 ISR 副本必须追赶高水位线以上的消息。
- 当新的 ISR 副本追赶到足够的进度后,它们被加入到 ISR 中。
- 旧的 ISR 副本在新的领导者时期号下无法追赶到足够的进度时,会被移除。
ISR 的伸缩机制确保了在副本之间同步状态的同时,能够动态地适应集群的状态变化。这有助于提高 Kafka 分区的可用性和容错性。
Was this helpful?
0 / 0