Kafka 学习kafka 选举机制

Posted 思想累积

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Kafka 学习kafka 选举机制的主要内容,如果未能解决你的问题,请参考以下文章

大数据之Kafka:Kafka之选举机制

Kaka与Zookeeper的爱恨情仇(——zookeeper过半选举机制)

Kafka3.x核心速查手册三服务端原理篇-2Broker选举机制

Kafka3.x核心速查手册三服务端原理篇-2Broker选举机制

Kafka3.x核心速查手册三服务端原理篇-2Broker选举机制

kafka备份机制——zk选举leader,leader在broker里负责备份