Kafka Partition Leader选举机制原理详解(上)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Kafka Partition Leader选举机制原理详解

1 大数据常用的选主机制

Leader选举算法非常多,大数据领域常用的有以下两种:

1.1 Zab(zookeeper使用)

Zab协议有四个阶段

  • Leader election
  • Discovery (E#epoch establish)
  • Synchronization (5X#sync with followers)
  • Broadcast

比如3个节点选举leader:编号为1、2、3。 1先启动,选择自己为leader,然后2启动

首先也选择自己为leader,由于1,2都没过半,选择编号大的为leader,所以1、2都

选择2为leader,然后3启动发现1,2已经协商好且数量过半,于是3也选择2为leader,leader选举结束。

1.2 Raft

类似美国大选。

在Raft中,任何时候一个服务器可以扮演下面角色之一:

  • Leader
    处理所有客户端交互,日志复制等,一般只有一个Leader
  • Follower
    类似选民,完全被动
  • Candidate候选人
    可被选为一个新的领导人

启动时在集群中指定一些机器为Candidate,然后Candidate开始向其他机器(尤

其是Follower)拉票,当某个Candidate的票数超过半数,它就成为leader。


都是 paoxs 算法的变种。


由于Kafka集群依赖zookeeper集群,所以最简单最直观的方案是,所有Follower

都在ZooKeeper上设置一个Watch,一旦Leader宕机,其对应的ephemeral

znode会自动删除,此时所有Follower都尝试创建该节点,而创建成功者

(ZooKeeper保证只有一个能创建成功)即是新的Leader,其它Replica即为

Follower。

2 常用选主机制的缺点

2.1 split-brain (脑裂)

这是由ZooKeeper的特性引起的,虽然ZooKeeper能保证所有Watch按顺序触发,但是网络延迟,并不能保证同一时刻所有Replica“看”到的状态是一样的,这就可能造成不同Replica的响应不一致,可能选出多个领导“大脑”,导致“脑裂”。

2.2 herd effect (羊群效应)

如果宕机的那个Broker上的Partition比较多, 会造成多个Watch被触发,造成集群内大量的调整,导致大量网络阻塞。

2.3 ZooKeeper负载过重

每个Replica都要为此在ZooKeeper上注册一个Watch,当集群规模增加到几千个Partition时ZooKeeper负载会过重。

目录
相关文章
|
1天前
|
消息中间件 存储 算法
深入了解Kafka的数据持久化机制
深入了解Kafka的数据持久化机制
41 0
|
1天前
|
消息中间件 存储 负载均衡
kafka底层原理分析
kafka底层原理分析
16 2
|
1天前
|
消息中间件 存储 负载均衡
Kafka 迁移工具 MirrorMaker2 原理起底
MirrorMaker2 (MM2) 是 Kafka 从 2.4.0 开始提供的数据复制工具,用于集群间的数据同步和备份。MM2 有三种部署模式:dedicated mode、standalone mode 和 Kafka Connect mode。AutoMQ即将推出基于MM2的迁移产品,助力用户平滑迁移到AutoMQ平台。
54 2
Kafka 迁移工具 MirrorMaker2 原理起底
|
1天前
|
消息中间件 Cloud Native Kafka
一文搞懂 Kafka consumer 与 broker 交互机制与原理
AutoMQ致力于打造下一代云原生Kafka系统,解决Kafka痛点。本文深入解析Kafka Consumer与Broker的交互机制,涉及消费者角色、核心组件及常用接口。消费者以group形式工作,包括leader和follower。交互流程涵盖FindCoordinator、JoinGroup、SyncGroup、拉取消息和退出过程。文章还探讨了broker的consumer group状态管理和rebalance原理。AutoMQ团队分享Kafka技术,感兴趣的话可以关注他们。
33 2
一文搞懂 Kafka consumer 与 broker 交互机制与原理
|
1天前
|
消息中间件 存储 传感器
Kafka消息队列原理及应用详解
【5月更文挑战第6天】Apache Kafka是高性能的分布式消息队列,常用于实时数据管道和流应用。它提供高性能、持久化、分布式和可伸缩的消息处理,支持解耦、异步通信和流量控制。Kafka的核心概念包括Broker、Topic、Partition、Producer、Consumer和Consumer Group。其特点是高吞吐、低延迟、数据持久化、分布式架构和容错性。常见应用包括实时数据流处理、日志收集、消息传递和系统间数据交换。
|
1天前
|
消息中间件 监控 Kafka
【Kafka】分区副本中的 Leader 如果宕机但 ISR 却为空该如何处理
【4月更文挑战第12天】【Kafka】分区副本中的 Leader 如果宕机但 ISR 却为空该如何处理
|
1天前
|
消息中间件 存储 Kafka
【Kafka】Replica、Leader 和 Follower 三者的概念分析
【4月更文挑战第11天】【Kafka】Replica、Leader 和 Follower 三者的概念分析
|
1天前
|
消息中间件 监控 Kafka
【Kafka】Kafka 分区Leader选举策略
【4月更文挑战第7天】【Kafka】Kafka 分区Leader选举策略
|
1天前
|
消息中间件 安全 Kafka
2024年了,如何更好的搭建Kafka集群?
我们基于Kraft模式和Docker Compose同时采用最新版Kafka v3.6.1来搭建集群。
507 2
2024年了,如何更好的搭建Kafka集群?
|
1天前
|
消息中间件 存储 数据可视化
kafka高可用集群搭建
kafka高可用集群搭建
49 0