作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维工作中,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 集合中。
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 在高可用性和数据一致性之间取得平衡。

posted @ 2025-04-07 21:30  黄嘉波  阅读(116)  评论(0)    收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波