Kafka 学习(四)kafka 选举机制

1、分区副本选举机制

1.1 副本机制:

在 kafka 中,每个主题可以有多个分区,每个分区可以有多个副本,副本中只有一个是 leader 并对外提供服务,其他都是 follower 副本

多个 follower 副本通常存在和 leader 副本不同的 broker 中,通过这样的机制实现了高可用

所有读写请求都是由 leader 进行处理,follower 副本功能就是从 leader 拉取消息,使内容保持一致

1.2 为什么使用副本
  • 当主节点 leader 挂掉,不是直接从 follower 中选择主节点,而是从 ISR 加入同步队列的副本中选择

    • producer push 推送数据给 leader

    • follower 从 leader pull 拉取数据

    • follower 隔一定时间从 leader 拉取数据,保证数据同步

1.3 关键词:
  • AR:Assigned Replicas 用来标识副本的全集
  • OSR:out-sync Replicas 离开同步队列的副本
  • ISR:in-sync Replicas 加入同步队列的副本
  • ISR = Leader + 没有落后太多的 follower 副本; AR = OSR + ISR
1.4 ISR 副本集合保存副本条件:
  • leader 与 follower 数据相差超过 4000 条
    • replica.lag.max.message = 4000
  • 超过 3 秒未同步数据,拉取速度慢于 leader 副本写入速度
    • replica.lag.time.max.ms = 3000
  • 如果 follower 速度提升上来之后,可能会重新加入 ISR 副本集合中
1.5 ISR 实现 leader 选举
  • zookeeper 的 leader 节点挂掉时,会通过 ZXID 或者 myid 选举出新的 leader
  • kafka 会将与 leader 副本保持同步的副本放到 ISR 集合中,leader 挂掉时,如果 ISR 副本中除了 leader 还有其它的副本,会选取最新的副本成为 leader
  • 如果 ISR 副本中没有其它副本存在的话,如果设置了 unclean.leader.election.enable = true,kafka 将会从非 ISR 副本集合中的副本中,选出副本成为 leader

2、Broker 选举机制

一个 kafka 集群中,有多个 broker 节点,broker 中存在一个 leader,其它 broker 作为 follower,broker 选举依赖 zookeeper 实现

2.1 kafka 集群 leader 选举
  • 第一个启动的 broker 会在 zookeeper 中创建临时的 controller 节点
  • 其它 broker 启动时会尝试创建 controller 节点,如果已存在该节点,在 zookeeper 中创建 watch 对象,接收控制器变更的通知
  • 如果 broker 中的 leader 节点挂掉,其它 broker 通过 watch 收到 controller 变更的通知,尝试创建临时节点 controller,一个创建成功,其它继续 watch
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起来搬砖呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值