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中
- 可能落后很多数据丢失
- 等待ISR中任一Replica恢复,并选它为Leader。
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/16497347.html