kafka的leader和follower

leader和follower

kafka的leader和follower是相对于分区有意义的,不是相对于broker。

因为每个分区都有leader和follower,

leader负责读写数据。

follower负责复制leader的数据保存到自己的日志数据中,并在leader挂掉后重新选举出leader。

kafka会再创建topic的时候尽量让分配分区的leader在不同的broker中,就是负载均衡。

与Zookeeper区分

zookeeper的leader负责读写,follower可以读取。

kafka的leader负责读写,follower不能读写数据(确保每个消费者消费的数据是一致的),kafka一个topic有多个分区leader,一样可以实现负载均衡。

AR/ISR/OSR

kafka的follower可以分为三类:AR ISR OSR

  • AR(Assigned Replicas)表示一个topic下的所有副本。
  • ISR(In-Sync Replicas)表示一个topic下正在同步的副本。
  • OSR表示(OUT-SYNC-Replicas)不再同步的副本。

AR=ISR+OSR

查看分区的ISR

使用Kafka Eagle查看某个Topic的partition的ISR有哪几个节点。

partition是创建的topic为test的  0 1 2 三个分区。

Log Size是日志文件的大小

Leader是leader副本在那个broker节点上

Replicas是它的副本在哪些broker节点上。

In sync Replicas是正在同步的副本(包括leader)

尝试关闭id为0的broker(杀掉该broker的进程),参看topic的ISR情况。

leader的选举

leader的选举对于消息的写入以及读取非常关键,此时有两个疑问:

  • kafka是如何确定partition的哪个副本是leader,那个副本是follower呢?
  • 某个leader崩溃后,怎么快速确定另一个leader呢?因为Kafka的吞吐量很高、延迟很低,所以选举leader必须非常快

leader崩溃,kafka如果处理

使用Kafka Eagle找到某个partition的leader,再找到leader所在的broker。在Linux中强制杀掉该Kafka的进程,然后观察leader的情况。

通过观察,我们发现,leader在崩溃后,Kafka又从其他的follower中快速选举出来了leader。

Controller

  • kafka启动的时候,会在所有的broker中选举出controller
  • 前面的leader和follower是针对partition的副本,而controller是针对broker的。
  • 创建topic或者添加分区,修改副本数量之类的管理任务都是交给controller完成的。
  • kafka分区leader的选举,也是由controller决定的。

Controller的选举

  • 在kafka集群启动的时候,每个broker都会尝试去Zookeeper上注册为controller(ZK临时节点)
  • 但是只有一个竞争成功,其他的broker会注册该节点的监视器。
  • 一但节点的状态发生变化,就可以进行处理。
  • Controller也是高可用的,一旦某个broker崩溃,其他的broker会重新注册为Controller。

Controller选举partition的leader

  • 所有Partition的leader选举都由controller决定.
  • controller会将leader的改变通过RPC的方式通知需要为此做出响应的Broker
  • controller读取当前分区的ISR,只要有一个Replica还幸存,就选择其中一个作为leader。
  • 如果该partition的所有Replica都已经宕机,则新的leader为-1

为什么不通过ZK的方式进行选举?

如果kafka是居于ZK进行选举,ZK的压力比较大,例如某个节点崩溃,这个节点上不仅仅只有一个leader,是有不少的leader需要选举,通过ISR可以快速选举。

leader的负载均衡

kafka中引入Preferred Replica的概念,意思是优先的Replica。

在ISR中第一个replica就是preferred-replica.

副本存放的第一个broker,肯定就是preferred-replica

执行以下脚本可以将preferred-replica设置为leader,均匀分配每个分区的leader。

./kafka-leader-election.sh --bootstrap-server node1.itcast.cn:9092 --topic 主题 --partition=1 --election-type preferred

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/691274.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Unity】 HTFramework框架(五十一)代码片段执行器

更新日期:2024年6月8日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 Code Snippet Executer 代码片段执行器使用 Code Snippet Executer打开 Code Snippet Executer动态执行(代码片段)静态执行&#x…

从 Android 恢复已删除的备份录

本文介绍了几种在 Android 上恢复丢失和删除的短信的方法。这些方法都不能保证一定成功,但您可能能够恢复一些短信或其中存储的文件。 首先要尝试什么 首先,尝试保留数据。如果你刚刚删除了信息,请立即将手机置于飞行模式,方法是…

CSAPP Lab02——Bomb Lab完成思路详解

看见的看不见的 瞬间的永恒的 青草长啊大雪飘扬 ——月亮之上 完整代码见:CSAPP/bomb at main SnowLegend-star/CSAPP (github.com) 01 字符串比较 简单的把输入的字符串和地址“0x402400”内早已存储的字符串相比较。如果两个字符串相等则函数返回,否…

比亚迪正式签约国际皮划艇联合会和中国皮划艇协会,助推龙舟入奥新阶段

6月5日,比亚迪与国际皮划艇联合会、中国皮划艇协会在深圳共同签署合作协议,国际皮划艇联合会主席托马斯科涅茨科,国际皮划艇联合会秘书长理查德派蒂特,中国皮划艇协会秘书长张茵,比亚迪品牌及公关处总经理李云飞&#…

【计算视觉】学习计算机视觉你不得不膜拜的CVPR大神:何凯明

目录 第一章:CVPR——计算机视觉的终极擂台 第二章:何凯明——计算机视觉领域的耀眼星辰 第三章:高引用论文——计算机视觉研究的璀璨星辰 第四章:何凯明的CVPR论文——深度学习的探索之旅 第五章:结语——向何凯…

多样本上下文学习:开拓大模型的新领域

大模型(LLMs)在少量样本上下文学习(ICL)中展现出了卓越的能力,即通过在推理过程中提供少量输入输出示例来学习,而无需更新权重。随着上下文窗口的扩展,我们现在可以探索包含数百甚至数千个示例的…

线性表和链表

一,线性结构 1.Array Array文档:可以自行阅读相关文档来了解Array class array.array(typecode[, initializer]) array.append(x):添加元素到数组末尾 array.count(x):计算元素出现次数 array.extend(iterable):将迭代…

数据库(27)——多表查询——自连接

语法 SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...; 自连接可以是内连接查询也可以是外连接查询。 演示 我新增了字段friend便于演示 查询所有人的名字以及他们的friend的人的名字: select a.name,b.name from user a,user b where a.friendb.id; 其…

LeetCode72编辑距离

题目描述 解析 一般这种给出两个字符串的动态规划问题都是维护一个二维数组,尺寸和这两个字符串的长度相等,用二维做完了后可以尝试优化空间。这一题其实挺类似1143这题的,只不过相比1143的一种方式,变成了三种方式,就…

构建数字社会:Web3时代的社会治理与价值重构

随着数字化技术的飞速发展,我们正逐渐迈入Web3时代,这是一个以去中心化、开放性和透明性为特征的新时代。在这个时代,数字技术将不仅仅改变我们的生活方式和商业模式,还将对社会治理和价值观念产生深远影响。本文将探讨Web3时代下…

今天是放假带娃的一天

端午节放假第一天 早上5点半宝宝就咔咔乱叫了,几乎每天都这个点醒,准时的很,估计他是个勤奋的娃吧,要早起锻炼婴语,哈哈 醒来后做饭、洗锅、洗宝宝的衣服、给他吃D3,喂200ml奶粉、给他洗澡、哄睡&#xff0…

Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)

上期链接:Unity2D游戏制作入门 | 11(之人物属性及伤害计算)-CSDN博客 上期我们聊到了人物的自身属性和受伤时的计算,我们先给人物和野猪挂上属性和攻击属性的代码,然后通过触发器触发受伤的事件。物体(人物也好敌人也行&#xff…

信息系统项目管理师0148:输出(9项目范围管理—9.3规划范围管理—9.3.3输出)

点击查看专栏目录 文章目录 9.3.3 输出 9.3.3 输出 范围管理计划 范围管理计划是项目管理计划的组成部分,描述将如何定义、制定、监督、控制和确认项 目范围。范围管理计划用于指导如下过程和相关工作: ①制定项目范围说明书;②根据详细项目范…

【树莓派内核版本降级】笔记

【树莓派内核版本降级】笔记 文章目录 【树莓派内核版本降级】笔记一、起因二、降级流程1.降级失败经验(使用一体化的降级命令)2.手动下载固件(降级成功) 一、起因 我在学习树莓派内核开发以及驱动开发的时候,树莓派在…

【uni-app】申请高德地图key,封装map.js,实现H5、iOS、Android通过getlocation获取地图定位信息

文章目录 map组件基础使用封装map.js,实现定位1、使用第三方地图:高德,申请对应平台key1、申请H5 key2、申请微信小程序 key3、申请android key查看证书详情,可以看到SHA1查看/设置Android包名 4、申请ios key 2、封装map1、lib/m…

例54:Draw使用

建立一个控制台工程,输入代码: Screen 13 移动到(50,50)而不绘图 Draw "BM 50,50" B:移动但不绘制,M:移动到指定位置 将绘图颜色设置为2(绿色) Draw "C2" C将颜色改为n …

2024最新 Jenkins + Docker实战教程(八)- Jenkins实现集群并发构建

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

SEO之关键词分布

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 经过核心关键词确定与关键词扩展,应该已经得到一个至少包含几百个相关关键词的大列表。这些关键…

解决 There is no getter for property named ‘null‘ in ‘class 报错

1. 问题 mybatis-plus在更新删除操作时报错 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession750ee72a] 2024-06-08 21:03:07 [http-nio-8080-exec-3] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servl…

人工智能在【肿瘤生物标志物】领域的最新研究进展|顶刊速递·24-06-08

小罗碎碎念 本期文献速递的主题是——人工智能在“肿瘤生物标志物”领域的最新研究进展。 重点关注 今天推荐的6篇文献中,第二篇和第三篇是小罗最喜欢的,因为对于临床来说,比较具有实际意义,也和自己的想法很契合。 尤其是第三篇…