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

简介: 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负载会过重。

目录
相关文章
|
11月前
|
JSON 搜索推荐 API
唯品会 API 接口:唯品会平台促销活动订单转化率提升
在电商中,促销活动是提升销量的重要手段。唯品会作为领先的品牌折扣平台,通过限时抢购、优惠券等方式吸引用户,但如何提升订单转化率仍是关键挑战。本文分析了用户决策延迟、信息不对称、个性化不足等问题,并介绍如何利用唯品会 API 接口实现数据驱动优化。通过实时数据同步、个性化推荐和自动化处理,API 可帮助开发者提升转化率,案例显示优化后转化率平均提升 20%-30%。同时,自动化流程降低了运营成本,增强了用户体验。集成唯品会 API,是实现高效促销、提升用户粘性的重要路径。
|
Linux 开发者
Linux的诞生:Linus Torvalds的“惊天一敲”与Linux内核的“首秀”
在科技界璀璨星辰中,Linus Torvalds以一次“惊天一敲”悄然点燃了革命之火——Linux就此诞生。1991年,不满现状的Linus决定创造更好的操作系统,这一敲不仅开启了个人传奇,更奏响了技术革新的序章。他将Linux内核低调发布网络,随即吸引了全球开发者的目光与贡献,使之迅速成长为开源世界的巨星。Linus的故事告诉我们:伟大创举常源于微小想法,也许下一个改变世界的“一敲”就出自你手。
908 1
|
对象存储
minio临时凭证直传切换到阿里云oss
minio临时凭证直传切换到阿里云oss
1060 1
|
安全 算法 Java
[转载]AOP 的利器:ASM 3.0 介绍
引言 什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。
1606 0
|
存储 算法 大数据
内存原理 | 内存分配 | 内存对齐
内存原理 | 内存分配 | 内存对齐
|
机器学习/深度学习 数据可视化 算法框架/工具
【深度学习】Generative Adversarial Networks ,GAN生成对抗网络分类
文章概述了生成对抗网络(GANs)的不同变体,并对几种经典GAN模型进行了简介,包括它们的结构特点和应用场景。此外,文章还提供了一个GitHub项目链接,该项目汇总了使用Keras实现的各种GAN模型的代码。
1910 0
|
运维 监控 项目管理
运维工程师的出路到底在哪里?—— 浅谈运维工程师前景
运维工程师的出路到底在哪里?—— 浅谈运维工程师前景
|
PyTorch 算法框架/工具 计算机视觉
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
本文介绍了使用YOLOv4-Tiny进行目标检测的完整流程,包括模型介绍、代码下载、数据集处理、网络训练、预测和评估。
1400 2
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
|
移动开发 前端开发 JavaScript
使用Flexible实现手淘H5页面的终端适配
使用Flexible实现手淘H5页面的终端适配
797 0
使用Flexible实现手淘H5页面的终端适配
|
消息中间件 网络协议 物联网
什么是无线通信协议?
无线通信协议是相对于有线通信协议的,无线通信在现在信息领域是无处不在的,只要是没有插线就能通信的场景都离不开无线通信协议。
733 3

热门文章

最新文章