在运维工作中,kafka中的ISR,AR代表什么,ISR伸缩又代表什么?
在运维工作中,理解 Kafka 中的 ISR(In-Sync Replicas)和 AR(Assigned Replicas)以及 ISR 的伸缩机制非常重要。以下是详细的解释:
1. ISR(In-Sync Replicas)
ISR 是指与 Leader 副本保持同步的副本集合。这些副本被认为是“同步”的,意味着它们已经成功复制了 Leader 副本上的所有消息。
- 作用:
- 数据同步:ISR 确保了分区的所有副本与 Leader 副本保持数据同步。当消息被 Leader 副本确认接收后,ISR 中的副本也会逐渐复制消息,确保所有副本之间的数据一致性。
- 高可用性:ISR 中的副本可以快速接管分区的读写请求,提高了分区的高可用性。当 Leader 副本发生故障时,ISR 中的副本可以立即接管分区的服务,而无需等待数据复制完成。
2. AR(Assigned Replicas)
AR 是指一个分区的所有副本集合,包括 Leader 和所有 Follower 副本。
- 作用:
- 副本分配:AR 确定了每个分区的副本分配策略,包括副本的数量、分布和位置等。
- 负载均衡:AR 通过动态调整副本的分布,实现了集群的负载均衡。通过在不同节点上分配副本,AR 可以避免某些节点的负载过重,提高了系统的整体性能和稳定性。
3. ISR 的伸缩
ISR 的伸缩是指 Kafka 动态调整 ISR 集合的过程。
- 伸缩机制:
- 收缩:如果某个副本落后于 Leader 太多(超过了
replica.lag.time.max.ms配置的时间),它将被从 ISR 集合中移除。 - 扩展:如果某个副本重新赶上 Leader,它将被重新添加到 ISR 集合中。
- 收缩:如果某个副本落后于 Leader 太多(超过了
4. 相关配置参数
replica.lag.time.max.ms:控制副本在 ISR 集合中的超时时间。如果一个副本在这个时间内没有向 Leader 发送心跳或复制消息,它将被从 ISR 集合中移除。min.insync.replicas:配置一个分区的最小 ISR 数量。如果 ISR 集合中的副本数量低于这个值,Kafka 将停止接受写操作,以确保数据的一致性和可靠性。
5.示例演示
假设有一个 Kafka 主题 my-topic,其分区 0 有 3 个副本,分别位于 Broker 1、Broker 2 和 Broker 3 上。初始状态下:
- Leader:Broker 1
- ISR:[Broker 1, Broker 2, Broker 3]
- AR:[Broker 1, Broker 2, Broker 3]
如果 Broker 2 因为网络延迟导致无法及时复制 Leader 的消息,超过 replica.lag.time.max.ms 配置的时间后,Kafka 会将 Broker 2 从 ISR 集合中移除:
- Leader:Broker 1
- ISR:[Broker 1, Broker 3]
- AR:[Broker 1, Broker 2, Broker 3]
如果 Broker 2 恢复正常并重新赶上 Leader,Kafka 会将其重新添加到 ISR 集合中:
- Leader:Broker 1
- ISR:[Broker 1, Broker 2, Broker 3]
- AR:[Broker 1, Broker 2, Broker 3]
综上所述,通过合理配置这些参数,可以确保 Kafka 在高可用性和数据一致性之间取得平衡。

浙公网安备 33010602011771号