`

Kafka Leader的选举机制

 
阅读更多
Kafka的Leader是什么
首先Kafka会将接收到的消息分区(partition),每个主题(topic)的消息有不同的分区。这样一方面消息的存储就不会受到单一服务器存储空间大小的限制,另一方面消息的处理也可以在多个服务器上并行。
其次为了保证高可用,每个分区都会有一定数量的副本(replica)。这样如果有部分服务器不可用,副本所在的服务器就会接替上来,保证应用的持续性。


但是,为了保证较高的处理效率,消息的读写都是在固定的一个副本上完成。这个副本就是所谓的Leader,而其他副本则是Follower。而Follower则会定期地到Leader上同步数据。

Leader选举
如果某个分区所在的服务器除了问题,不可用,kafka会从该分区的其他的副本中选择一个作为新的Leader。之后所有的读写就会转移到这个新的Leader上。现在的问题是应当选择哪个作为新的Leader。显然,只有那些跟Leader保持同步的Follower才应该被选作新的Leader。
Kafka会在Zookeeper上针对每个Topic维护一个称为ISR(in-sync replica,已同步的副本)的集合,该集合中是一些分区的副本。只有当这些副本都跟Leader中的副本同步了之后,kafka才会认为消息已提交,并反馈给消息的生产者。如果这个集合有增减,kafka会更新zookeeper上的记录。
如果某个分区的Leader不可用,Kafka就会从ISR集合中选择一个副本作为新的Leader。
显然通过ISR,kafka需要的冗余度较低,可以容忍的失败数比较高。假设某个topic有f+1个副本,kafka可以容忍f个服务器不可用。

为什么不用少数服从多数的方法
少数服从多数是一种比较常见的一致性算法和Leader选举法。它的含义是只有超过半数的副本同步了,系统才会认为数据已同步;选择Leader时也是从超过半数的同步的副本中选择。这种算法需要较高的冗余度。譬如只允许一台机器失败,需要有三个副本;而如果只容忍两台机器失败,则需要五个副本。而kafka的ISR集合方法,分别只需要两个和三个副本。

如果所有的ISR副本都失败了怎么办
此时有两种方法可选,一种是等待ISR集合中的副本复活,一种是选择任何一个立即可用的副本,而这个副本不一定是在ISR集合中。这两种方法各有利弊,实际生产中按需选择。
如果要等待ISR副本复活,虽然可以保证一致性,但可能需要很长时间。而如果选择立即可用的副本,则很可能该副本并不一致。


  • 大小: 19.1 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    kafka-lead 的选举过程

    1. **选举机制**:控制器通过监听Zookeeper中的事件,执行`elect`方法来选举或重新选举主题分区的领导者。有四种情况会触发`elect`方法:节点启动、控制器会话中断、已有节点成为leader以及在成为leader过程中发生...

    kafka数据可靠性机制详解共4页.pdf.zip

    Kafka通过副本和选举机制实现快速故障恢复。同时,Kafka Cluster可以通过增加brokers数量提高可用性,减少单点故障的影响。 总结,Kafka的数据可靠性机制涉及多个层面,从副本复制、ISR管理到acks策略、幂等性和...

    Linux搭建Kafka开发环境

    在Kafka的设计思想方面,文章阐述了Kafka Broker的Leader选举机制。在Zookeeper集群的管理下,所有Kafka Broker节点会尝试在Zookeeper上注册临时节点以成为Leader。如果Leader宕机,会重新选举新的Leader。同时,...

    Kafka高可用性实现原理

    Kafka 通过 Zookeeper 来管理集群配置、选举 leader 以及在 Consumer Group 发生变化时进行 rebalance。Zookeeper 保证了 Kafka 集群的高可用性和高吞吐量。 Kafka 的高可用性实现原理是基于分布式系统架构、消息...

    Kafka 实战演练 5

    本实战演练将深入探讨Kafka中的领导者选举机制,特别是针对"第5课 Kafka Leader Election"这一主题。 ### 1. Kafka集群架构 Kafka集群由多个服务器(称为Brokers)组成,每个服务器都可以存储和转发消息。为了提高...

    kafka 数据可靠性深度解读.pdf

    7. Leader选举:在Kafka集群中,每个Partition都有一个Leader负责处理读写请求。如果Leader发生故障,将由Zookeeper触发新一轮的Leader选举,集群中的其他副本将会竞争成为新的Leader。 综上所述,Kafka通过其架构...

    Kafka 分区(详细).doc

    Leader 选举是 Kafka 中的一种机制,用于在 Leader 副本不可用时选择新的 Leader 副本。该机制通过在 ISR(in-sync replica)集合中选择一个副本作为新的 Leader。ISR 集合是 Kafka 维护的一种集合,包含了所有跟 ...

    图解 Kafka 之实战指南

    当leader副本发生故障时,Kafka能够自动选举新的leader副本继续提供服务。 #### 五、Kafka架构 Kafka的核心组件包括Producer、Broker、Consumer以及ZooKeeper集群。ZooKeeper主要负责管理集群的元数据和控制节点的...

    kafka面试题参考

    Kafka面试题参考 ...由于用到来 ZK 来协调,每个分区都有一个机器为 Leader 状态,服务对外响应(如读写操作),若该 Leader 挂掉后,会由其他的 Follower 来选举出新的 Leader 来保证集群的高可用性。

    华为kafka.zip

    在Kafka中,Zookeeper主要负责管理broker的注册、消费者组的协调、分区 leader 的选举等任务。 在华为kafka的环境中,Zookeeper的使用可能也有所优化,以更好地配合华为的系统架构和安全策略。比如,可能增加了对...

    Kafka技术内幕:图文详解Kafka源码设计与实现+书签.pdf+源码

    《Kafka技术内幕:图文详解Kafka源码设计与实现》是一本深入解析Apache Kafka的专著,旨在帮助读者理解Kafka的核心设计理念、内部机制以及源码实现。这本书结合图文并茂的方式,使得复杂的概念变得更为易懂。同时,...

    kafka全套视频教程

    - **故障恢复**:通过副本机制和Leader选举机制,确保数据不丢失且服务持续可用。 #### 七、Kafka与生态系统集成 - **与Hadoop集成**:Kafka可以通过Flume、Sqoop等工具将数据导入Hadoop进行批量处理。 - **与...

    kafka 2.10-0.9.0.1 源码

    5. **故障恢复**:`kafka.controller.KafkaController` 类管理控制器,处理 Leader 选举和分区再平衡。 通过阅读源码,我们可以了解到 Kafka 如何处理这些复杂的任务,例如如何有效地在多个 broker 之间复制数据,...

    kafka入门必备手册

    当leader出现故障时,通过选举机制选出新的leader以保证系统的稳定运行。 **Kafka主要配置** Kafka提供了丰富的配置选项,以适应不同的使用场景。一些重要的配置项包括: 1. broker.id:唯一标识Kafka集群中的每个...

    kafka开发文档

    Kafka的可用性和持久性得益于其副本管理和leader选举机制。如果所有副本都失效了,Kafka能够通过配置中的副本策略来决定如何处理这种情况,比如停止处理新的消息,直到副本恢复。 此外,Kafka还提供了日志压缩功能...

    kafka简介

    - **Leader选举**: 每个Partition都有一个Leader Broker负责处理该Partition的所有读写请求。如果Leader Broker发生故障,Kafka会自动选择一个Follower作为新的Leader。 - **负载均衡**: Kafka集群能够自动平衡各个...

    最新版kafka kafka_2.12-2.5.1.tgz

    - **Zookeeper**: Kafka 使用 Zookeeper 进行集群协调,管理元数据和选举 Leader。 3. **Kafka 特性** - **持久化**: Kafka 可以将消息持久化到磁盘,确保消息不会丢失。 - **高吞吐量**: 通过批量发送和批量...

    kafka-2.13-2.8.0

    3. **Quorum机制优化**:对Zookeeper的依赖减少,引入Raft协议,提高选举效率和可用性。 4. **安全增强**:支持SASL/SSL加密通信,增强了身份验证和授权机制。 三、Kafka架构 Kafka采用发布/订阅模型,生产者发布...

    kafka学习详细文档笔记

    - **选举机制**:如果Leader失效,系统会自动选举一个新的Leader来接替工作,从而保证服务的连续性。 **7、日志** - **日志结构**:Kafka中的日志以文件形式存储在磁盘上,每个Partition对应一组日志文件。日志...

Global site tag (gtag.js) - Google Analytics