Kafka Leader Election

【kafka运维】Leader重新选举运维脚本 我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!、缓存、消息中间件、源码等相关面试题。** 阅读详情

Zookeeper的基本操作

  • 四种节点类型
    •  PERSIST【永久节点,会被永久化到磁盘当中,ZooKeeper重启之后这些节点还会继续存在】
    • PERSIST_SEQUENTIAL【顺序节点,例如:如果有一个节点,我们将它设置成该类型,那么多个客户端可以同时重建相同的节点,但是他会根据先后顺序会在后边加一个序列号,比如第一个创建的是/a/b-00001,第二个就是/a/b-00002】
    • EPHEMERAL【机器重启之后,这种类型的节点不会存在】
    • EPHEMERAL_SEQUENTIAL【与第二种类型相反,当创建了/a/b,第二个节点继续创建,就会报错,说这个节点已经存在】
  • 可注册Watch操作
    • Created event:Enabled with a call to exists【创建一个节点】
    • Deleted event:Enabled with a call to exists, getData, and getChildren【删除一个节点】
    • Changed event:Enabled with a call to exists and getData【改变某个节点的值】
    • Child event:Enabled with a call to getChildren【有些子节点被创建或者删除】
  • Watch特征
    • 客户端先得到通知再得到数据【刚开始通过event看是不存在的,后来被创建了,客户端在得到数据之前,它肯定先得到一个通知,这个节点被创建了,或者Changed event ,getData先获取到一个值,比如:1,后来这个值被改成2,再次得到2之前肯定是先得到Changed event这个事件,然后才能得到最新的值】
    • Watch被fire后即取消,不会再Watch后续【如果我们希望去监控节点的变化,那么我们就需要再次去注册,那么在fire之后,到创建之前,如果这段时间中数据有变化,我们的客户端是得不到任何的通知】

基于Zookeeper的Leader Election

  • 抢注Leader节点——非公平模式

  1. 创建Leader父节点,如 /chroot,并将其设置为persist节点
  2. 各客户端通过在/chroot下创建Leader节点,如/chroot/leader,来竞争Leader。该节点应被设置为ephemeral
  3. 若某创建Leader节点成功,则该客户端成功竞选为Leader
  4. 若创建Leader节点失败,则竞选Leader失败,在/chroot/leader节点上注册exist的watch,一旦该节点被删除则获得通知
  5. Leader可通过删除Leader节点来放弃Leader
  6. 如果Leader宕机,由于Leader节点被设置为ephemeral,Leader节点会自行删除。而其它节点由于在Leader节点上注册了watch,故可得到通知,参与下一轮竞选,从而保证总有客户端以Leader角色工作
  • 先到先得,后者监视前者——公平模式

  1. 创建Leader父节点,如 /chroot,并将其设置为persist节点
  2. 各客户端通过在/chroot下创建Leader节点,如/chroot/leader,来竞争Leader。该节点应被设置为ephemeral_sequential
  3. 客户端通过getChildren方法获取/chroot/下所有子节点,如果其注册的节点的id在所有子节点中最小,则当前客户
    端竞选Leader成功【
    没有被竞选称为Leader的节点都去注册id比自己小的并且最大的那个节点,换句话说我们把所有的节点按id去排序】
  4. 否则,在前面一个节点上注册watch,一旦前者被删除,则它得到通知,返回步骤3(并不能直接认为自己成为新
    Leader,因为可能前面的节点只是宕机了)
  5. Leader节点可通过自行删除自己创建的节点以放弃Leader

Leader Election在Curator中的实现

  • LeaderLatch

    • 竞选为Leader后,不可自行放弃领导权
    • 只能通过close方法放弃领导权
    • 强烈建议增加ConnectionStateListener,当连接SUSPENDED或者LOST时视为丢失领导权
    • 可通过await方法等待成功获取领导权,并可加入timeout
    • 可通过hasLeadership方法判断是否为Leader
    • 可通过getLeader方法获取当前Leader
    • 可通过getParticipants方法获取当前竞选Leader的
  • ​​​​​​​LeaderSelector

    • ​​​​​​​竞选Leader成功后回调takeLeadership方法
    • 可在takeLeadership方法中实现业务逻辑
    • 一旦takeLeadership方法返回,即视为放弃领导权
    • 可通过autoRequeue方法循环获取领导权
    • 可通过hasLeadership方法判断是否为Leader
    • 可通过getLeader方法获取当前Leader
    • 可通过getParticipants方法获取当前竞选Leader的参与方

Kafka“各自为政”Leader Election

  • “各自为政”Leader Election
    • ​​​​​​​每个Partition的多个Replica同时竞争Leader
  • ​​​​​​​优点:
    • ​​​​​​​实现简单
  • ​​​​​​​缺点:
    • ​​​​​​​Herd Effect
    • Zookeeper负载过重
    • Latency

Kafka基于Controller的Leader Election

  • 基于Controller的Leader Election
    • ​​​​​​​整个集群中选举出一个Broker作为Controller
    • Controller为所有Topic的所有Partition指定Leader及Follower
  • ​​​​​​​优点:
    • ​​​​​​​极大缓解Herd Effect问题
    • 减轻Zookeeper负载
    • Controller与Leader及Follower间通过RPC通信,高效且实时​​​​​​​
  • 缺点:
    • 引入Controller增加了复杂度
    • 需要考虑Controller的Failover
kafka报错 failed to complete preferred replica leader election to 217. Leader is still 219 Failed to elect leader for partition __consumer_offsets-77 under strategy OfflinePartitionLeaderElectionStrategy cdh管理页面 问题原因 新增加的副本的offset 副本的offset比leader的新 所以在elect的时候 出现问题 解决方法 : 在kafka的home path 的bin目录下 执行自带平衡topic 脚本 kafka-preferred-replica-election 阅读详情

相关推荐

【kafka】Kafka Leader选举流程和选举策略

创建新的Topic的时候,并没有发生Leader选举的操作, 而是默认从分区对应的所有在线副本中选择第一个为leader, 然后isr就为 所有在线副本,再组装一下当前的controller_epoch信息,写入到zk节点/brokers/topics/{Topic名称}/partitions/{分区号}/state中。遍历上面写入zk成功的分区, 然后更新Controller里面的分区leader和isr的内存信息 并发送LeaderAndISR请求,通知对应的Broker Leader更新了。

九师兄 2103

深入学习Kafka:Leader Election - Kafka集群Leader选举过程分析

所有博文均在个人独立博客http://blog.mozhu.org首发,欢迎访问! 本文所讲的Leader是指集群中的Controller,而不是各个Partition的Leader。 为什么要有Leader? 在Kafka早期版本,对于分区和副本的状态的管理依赖于zookeeper的Wa...

683

《玩儿起来吧》MATLAB 实时图像处理系列(一二三四)

大家学了图像处理之后,是不是就想学以致用。而要用于生活中,最好的方式就是和摄像头搭配,实现实时图像处理。今天就给大家分享MATLAB实时图像处理的基础方法,希望能帮你快速入门。

HPC_ZY 1万+

Kafka学习笔记(4)----Kafka的Leader Election

1. Zookeeper的基本操作   zookeeper中的节点可以持久化/有序的两个维度分为四种类型:   PERSIST:持久化无序(保存在磁盘中)   PERSIST_SEQUENTIAL:持久化有序递增   EPHEMERAL:非持久化的无序的,保存在内存中,当客户端关闭后消失。   EPHEMERAL_SEQUENTIAL:非持久有序递增,保存在内存中,当客户端关闭...

Teddies10081008的博客 376

AstrBot插件开发全攻略:从零编写一个天气查询插件(Python实战)

本文提供了一份详细的AstrBot插件开发实战指南,手把手教你使用Python从零编写一个智能天气查询插件。内容涵盖插件系统核心设计、开发环境搭建、API调用与数据处理、自然语言交互实现以及插件打包发布全流程,帮助你快速掌握基于AstrBot框架的聊天机器人功能扩展技能。

weixin_29212867的博客 1081

Centos7 XFS(dm-0):Internal error XFS_WANT_CORRUPTED_GOTO

在k8s的道路上我们都是小白,每天启动虚机都会遇到各种各样的问题,这不。部署的k8s虚机启动发现操作系统启动异常,提示如下报错信息。进入/dev/mapper目录下,查询目录下路径信息。可以通过对文件系统进行修复操作,操作如下。重启完成后虚机恢复正常登录。

hedao0515的专栏 4582

Kafka学习之Replication tools之Preferred Replica Leader Election Tool

原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-2.PreferredReplicaLeaderElectionTool 这工具做了啥? 为了支持replication功能,每一个partition可以有多个replica。一个partition的replica列

xcc的博客 4433

打包可以在Hadoop 3.3.1和Hive 3.1.2上使用的Tez 0.10.1 minimal

编译打包可以在Hadoop 3.3.1和Hive 3.1.2上使用的Tez 0.10.1

qq_42013533的博客 2615

【Kafka】unclean.leader.election.enable

参数作用 就是当ISR列表内的节点都挂掉后,没有办法选举了,通过unclean.leader.election.enable=true 允许,ISR列表外的节点参与选举。 详细解释 如何提高Kafka可靠性是一个可以长篇大论的主题。很多初学者会简单的认为将客户端参数acks设置为-1即可保证Kafka的可靠性,显然这是很片面的观点。就可靠性本身而言,它并不是一个可以用“是”或者“否”来衡量的一个指标,而一般是用几个9来衡量。就参数方面而言,与Kafka可靠性相关的参数不止acks这一个,比如retries、

m0_45406092的博客 896

从编译到调通:RK3588与FPGA的PCIe XDMA驱动实战解析

本文详细解析了在RK3588平台上为FPGA板卡编译、加载与调试PCIe XDMA驱动的完整实战流程。内容涵盖环境准备、Makefile深度定制、编译排错、驱动加载与内核日志解读、设备节点分析以及用户空间编程实战,旨在帮助开发者打通RK3588与FPGA之间的高速PCIe通信链路,实现稳定可靠的数据传输。

weixin_29304021的博客 482

PC 端微信页面拆分及 JavaFx 使用

一、前言 对于一个知识点的学习过程来说,往往使用自己熟悉的工具或方式才更易于上手。因为所有同类型的知识点在抛出复杂的流程拨云见日后,所能得到的几乎都是同样的设计思想和实现理论。 在 Java 语言桌面版开发中,直至目前共提供了三套 UI 开发方式;Awt、Swing、JavaFx,以及一些扩展组件 SWT 等。在这三套 UI 组件中,JavaFx 是最新也是最为好用的,因为他提供了丰富的功能,以及...

bugstack虫洞栈 3605

Kafka参数图鉴——unclean.leader.election.enable

Kafka参数图鉴——unclean.leader.election.enable 如何提高Kafka可靠性是一个可以长篇大论的主题。很多初学者会简单的认为将客户端参数acks设置为-1即可保证Kafka的可靠性,显然这是很片面的观点。就可靠性本身而言,它并不是一个可以用“是”或者“否”来衡量的一个指标,而一般是用几个9来衡量。就参数方面而言,与Kafka可靠性相关的参数不止acks这一个,比如...

朱小厮的博客 1万+

YOLOv8与UNetV2融合:一种面向目标检测与图像分割的混合方法【附核心代码】

我们提出了一种基于YOLOv8和UNetV2相结合的混合架构。该架构利用YOLOv8作为主干进行目标检测,同时在YOLOv8的特征提取过程中,引入UNetV2来进行图像分割任务的增强。在该架构中,YOLOv8负责大范围目标检测和位置预测,而UNetV2则在检测网络的特征图基础上,通过其高效的上下文信息提取和细节恢复能力,进一步优化分割任务。在本文中,我们提出了一种改进YOLOv8的方法,通过引入图像分割网络UNetV2来提高图像分割检测性能。

一键难忘的博客 3524

kafka参数解析unclean.leader.election.enable

本文主要阐述的是Kafka可靠性相关参数中的一个,即unclean.leader.election.enable。 随着Kafka版本的变更,有的参数消失,也有的参数被加入进来,而传承下来的参数一般都不太会修改既定的默认值,而unclean.leader.election.enable参数却是其中的一个反例。 从Kafka 0.11.0.0版本开始unclean.leader.election....

微信公众号:大数据从业者 1202

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

娜璋AI安全之家于2020年8月18日开通,将专注于Python和安全技术,主要分享Web渗透、系统安全、CVE复现、威胁情报分析、人工智能、大数据分析、恶意代码检测等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engin

杨秀璋的专栏 2万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Kafka 优化参数 unclean.leader.election.enable

Kafka 某个节点挂掉,导致整个服务异常,为了保证服务容灾,可对下面几个参数进行调整 unclean.leader.election.enable=true min.insync.replicas=1 offsets.topic.replication.factor=3 这三个配置什么意思呢? 依次来看一下: unclean.leader.election.enable ...

jast 2945

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Kafka参数unclean.leader.election.enable详解

如何提高Kafka可靠性是一个可以长篇大论的主题。很多初学者会简单的认为将客户端参数acks设置为-1即可保证Kafka的可靠性,显然这是很片面的观点。就可靠性本身而言,它并不是一个可以用“是”或者“否”来衡量的一个指标,而一般是用几个9来衡量。就参数方面而言,与Kafka可靠性相关的参数不止acks这一个,比如retries、replication.factor、min.insync.repli...

微步的博客 2240

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Kafka进阶】-- unclean.leader.election.enable参数的内涵

在 kafka 1.x 版本中,处于安全和可靠的考虑,有不少参数过于保守。所以用户需要按需调整1、将 broker 参数 unclean.leader.election.enable 设置为 true(确保分区可从非 ISR 中选举 leader)2、将 broker 参数 default.replication.factor 设置为 3(提高高可用,但会增大集群的存储压力,可后续讨论)

欢迎来到我的博客,一起探索代码里的世界! 1266

Kafka中的配置项参数unclean.leader.election.enable

Kafka 某个节点挂掉,导致整个服务异常,为了保证服务容灾,可对unclean.leader.election.enable参数进行调整,该字段的官方解释为: Indicates whether to enable replicas not in the ISR set to be selected as leader as a last resort, even though doing so may result in data loss. 即:指示是否启用不在ISR集中的副本作为最后选择,即使这

北辰 2285

Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么?/unclean.leader.election

SR and AR 简单来说,分区中的所有副本统称为AR(Assigned Replicas)。所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成ISR(In Sync Replicas)。 ISR 集合是 AR 集合的一个子集。消息会先发送到leader副本,然后follower副本才能从leader中拉取消息进行同步。同步期间,follow副本相对于leader副本而言会有一定程度的滞后。前面所说的 ”一定程度同步“ 是指可忍受的滞后范围,这个范围可以通过参数进行配置...

Top5软件工程硕士,先后在京东、字节从事多年Java后端开发、实时和离线大数据开发 906

Kafka中unclean.leader.election.enable参数的内涵

Kafka中unclean.leader.election.enable参数的内涵 官网说明:http://kafka.apache.org/documentation/#configuration 参考上图,某种状态下,follower2副本落后leader副本很多,并且也不在leader副本和follower1副本所在的ISR(In-Sync Replicas)集合之中。follower2副本正在努力的追赶leader副本以求迅速同步,并且能够加入到ISR中。但是很不幸的是,此时ISR中的所有副本都突然

shkstart的博客 1728

kafka auto.leader.rebalance.enable和unclean.leader.election.enable

参考转载来自:https://time.geekbang.org/column/article/101171 1.auto.leader.rebalance.enable:ture/false------是否允许定期进行 Leader 选举 (1)配套参数: 若开启,默认300s即5分钟扫描一次,每次若发现每个broker之间的leader对比 比率超过10%,则重新发起选举。 ...

那又怎样?的博客 3775

Kafka参数--unclean.leader.election.enable

unclean.leader.election.enable参数设置为true,就有可能发生数据丢失和数据不一致的情况,Kafka的可靠性就会降低;而如果unclean.leader.election.enable参数设置为false,Kafka的可用性就会降低。具体怎么选择需要读者更具实际的业务逻辑进行权衡,可靠性优先还是可用性优先。从Kafka 0.11.0.0版本开始将此参数从true设置为...

weixin_43655417的博客 665

zookeeper和kafka的Leader Election算法

一、zookepper Leader Election 主要有两种方法: (1)抢注Leader节点-----非公平模式 (2)先到先得,后者监听前者-----公平模式 (1)抢注Leader节点-----非公平模式 1.创建Leader父节点,如/chroot,并将其设置为persist持久节点; 2.各客户端通过在/chroot下创建Leader节点,例如/chroot/Leader...

青鸟飞鱼 600
上一篇: Kafka如何使用Zookeep
下一篇: Kafka Consumer
Future_LL
博客等级 码龄9年 215粉丝 255原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值