美文网首页数客联盟Kafka
KafkaLeader选举时机和选举策略

KafkaLeader选举时机和选举策略

作者: WestC | 来源:发表于2018-04-26 17:32 被阅读9次

Kakfa的集中leader选举过程

  • Kafka是分布式的消息分发系统,通过引入topic的概念来区分消息类型,引入partition的概念来增加消息的吞吐量,引入replica的概念来提高消息的可靠性。在多replica的场景下,消息的读写都是通过leader来完成,其他replica则是通过从leader读取数据来完成消息的同步以保证leader异常时消息的完善性。 然而在多个replica的场景下,谁能成为leader? leader异常后,又如何选出新的leader呢这是kafka提供可靠服务的关键所在。下面就对此作简要分析。

Leader选举器

Kafka通过leaderSelector完成leader的选举。

可能触发为partition选举leader的场景有: 新创建topic,broker启动,broker停止,controller选举,客户端触发,reblance等等 场景。在不同的场景下选举方法不尽相同。Kafka提供了五种leader选举方式,继承PartitionLeaderSelector,实现selectLeader方法完成leader的选举, 下面对这五种leader选举方式给予说明:

NoOpLeaderSelector

该选举器不会调用到,大概是拿来测试用的。 该选举器直接返回当前的leader Irs,AR。

OfflinePartitionLeaderSelector

触发场景:
    * 新创建topic
    * PartitionStateMachine启动
    * broker启动时
    * ReplicaStateMachine检测到broker的znode“被删除”
选举:
    1) Isr列表中有存货的replica,直接选出
    2) 否则,unclean.leader.election.enable 为false,抛出异常
    3) 存活的ar中有replica,选出,否则抛出异常

ControlledShutdownLeaderSelector

触发场景:
    * kafka的broker进程政策退出发送消息给controller,controller触发
选举:
    * 在isr列表中的选出存活的replica,否则抛出异常

PreferredReplicaPartitionLeaderSelector

触发场景:
    * znode节点/admin/preferred_replica_election写入相关数据
    * partition-rebalance-thread线程进行触发reblance时
    * 新产生controller
选举 :
    1) AR中取出一个作为leader,如果与原有leader一样,抛出异常
    2) 新leade的replica的broker存活且replica在isr中,选出,否则抛出异常

ReassignedPartitionLeaderSelector

触发场景:
    * znode节点LeaderAndIsr发生变化
    * Broker启动时
    * zknode节点/admin/reassign_partitions变动
    * 新产生controller时
选举:
    * 新设置的ar中,存在broker存活的replica且replica在isr中则选出为leader,否则抛出异常

PS: 在所有的leader选举策略中,如果符合条件的replica有多个,如Seq[int],则使用的是Seq.head,取的是seq的第一个

Kafka的leader选举过程逻辑较为简单,参考kafka.controller.PartitionLeaderSelector.scala即可

相关文章

  • KafkaLeader选举时机和选举策略

    Kakfa的集中leader选举过程 Kafka是分布式的消息分发系统,通过引入topic的概念来区分消息类型,引...

  • zookeeper集群搭建

    1.集群选举策略 zookeeper集群后通过投票选举leader,选举时选通过判断zxid大小确定leader,...

  • Raft(4)— 安全性的证明

    Raft的特性 如何保证特性的 选举安全特性随机的选举超时机制,选举成功后发送心跳包告知他人。存在的问题:spli...

  • kafka的leader选举过程

    知道leader选举的设计和策略kafka的高可用设计,具体选举的过程如何?最简单最直观的方案是,leader在z...

  • zookeper选举策略

  • 关于日本的选举制度

    一、选举的种类 日本的选举分为参议院议员的选举、众议院议员的选举、包括地方(都道府县和市区町村)议会及首长的选举...

  • zookeeper的实现原理(下)

    leader 选举 Leader选举会分两个过程:启动的时候的leader选举、 leader崩溃的时候的的选举 ...

  • zookeeper的应用-leader选举

    leader选举 Curator 有两种选举 recipe(Leader Latch 和 Leader Elect...

  • 班级竞选

    班级中每个同学都是班级的主人,在班委选举中,都享有选举权和被选举权。人人参与选举,发表意见,积极投票,才能体现大家...

  • [Zookeeper] 选举流程Fast Leader

    选举信息-选举流程-选举场景-源码分析 1 选举信息 <1> 服务器角色信息在Zookeeper集群提供服务时,集...

网友评论

    本文标题:KafkaLeader选举时机和选举策略

    本文链接:https://www.haomeiwen.com/subject/eqemlftx.html