kafka ISR

kakfa 高可用的关键副本机制

副本的概念

  • kafka的replica包含leader与follower
  • 读写都是leader 执行

副本的提交

  • 同步复制 :全部的follower同步后才 提交 。可用性不好
  • 异步复制: 只要leader拿到数据后立即提交 follower慢慢复制。一致性不好。

导致是同步好还是异步好

  • leader 维护一个 In-sync-follower(ISR)
  • 当前 IRS中落后太多或者一段时间未同步则移除
  • 只有ISR中全部同步则提交

为什么所有follower都是向leader 确认ack 为啥会落后

  • kafka 可用批量生产 同步是批量 异步也是批量
  • 底层缓存队列会批量发送,例如leader中1000条 follower只有500就会被移除

分区选主

  • 一般在增加分区或者重新rebalance 时候有集群leader直接在AR顺序找到第一个并且在ISR中成为leader
  • 宕机后:
    • 等待ISR中任一Replica恢复,并选它为Leader。
      • 如果ISR 全部不可用则分区无法使用
    • 选择第一个恢复的Replica为新的Leader,无论它是否在ISR中
      • 可能落后很多数据丢失
posted @ 2022-07-20 11:40  vx_guanchaoguo0  阅读(32)  评论(0编辑  收藏  举报