Kafka - 09 Kafka副本 | Leader选举流程 | Follower故障 | Leader故障

news2024/10/7 18:29:15

文章目录

    • 1. 副本基本信息
    • 2. Leader选举流程
    • 3. Follower故障
    • 4. Leader故障

1. 副本基本信息

1)Kafka 副本作用:提高数据可靠性。

2)Kafka 默认副本 1 个,生产环境一般配置为 2 个,保证数据可靠性;太多副本会增加磁盘存储空间,增加网络上数据传输,降低效率。

3)Kafka 中副本分为:Leader 和 Follower。Kafka 生产者只会把数据发往 Leader,然后 Follower 找 Leader 进行同步数据。

4)Kafka 分区中的所有副本统称为 AR(Assigned Repllicas)。

  • AR = ISR + OSR
  • ISR,表示和 Leader 保持同步的 Follower 集合。如果 Follower 长时间未向 Leader 发送通信请求或同步数据,则该 Follower 将被踢出 ISR。该时间阈值由 replica.lag.time.max.ms 参数设定,默认 30s。Leader 发生故障之后,就会从 ISR 中选举新的 Leader。
  • OSR,表示 Follower 与 Leader 副本同步时,延迟过多的副本。

2. Leader选举流程

Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker 上,一个 topic 可以分为多个 partition, 如 TopicA主题内有3个分区 partition0~partition2 分别分布在 broker0~broker2 上。

Replication:为保证集群中的某个节点发生故障时, 该节点上的 partition数据不丢失 , 且 kafka 仍然能够继续工作, kafka提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower,并且leader 和 follower 需要分布在不同的服务器上。

在这里插入图片描述

Kafka 集群中有一个 broker 的 Controller 会被选举为 Controller Leader,负责管理集群 broker 的上下线,所有 topic 的分区副本分配和 Leader 选举等工作。Controller 的信息同步工作是依赖于 Zookeeper 的。

选举流程:

① kafka每启动一个节点就会在zookeeper中注册一个节点信息,每一个broker节点都有对应的Controller,他们会争先抢占Controller的注册,谁先注册谁会被选举为 Controller Leader。

② 选举出来的 Controller 会监听 brokers 节点变化,决定 Leader 的选举,将节点信息上传到 zookeeper,其他Contorller 就会从 zookeeper 同步相关信息。

③ 假设 Broker1 中 Leader 挂了,Controller 就会监听到节点变化,然后获取到 ISR,选举新的 Leader(在 ISR 中存活为前提,按照 AR 中排在前面的优先),更新 Leader 及 ISR。

在这里插入图片描述

利用4台服务器 hadoop101、hadoop102、hadoop103、hadoop104 来验证以上整个流程 :

① 创建一个新的 topic,4 个分区,4 个副本:

[root@hadoop101 kafka_2.12-2.2.1]# bin/kafka-topics.sh --bootstrap-server hadoop101:9092 --create --topic test3 --partitions 4 --replication-factor 4

② 查看 Leader 分布情况:

[root@hadoop101 kafka_2.12-2.2.1]# bin/kafka-topics.sh --bootstrap-server hadoop101:9092 --describe --topic test3
Topic: test3  PartitionCount:4  ReplicationFactor:4  Configs:segment.bytes=1073741824
Topic: test3    Partition: 0    Leader: 0       Replicas: 0,2,3,1       Isr: 0,2,3,1
Topic: test3    Partition: 1    Leader: 2       Replicas: 2,3,1,0       Isr: 2,3,1,0
Topic: test3    Partition: 2    Leader: 3       Replicas: 3,1,0,2       Isr: 3,1,0,2
Topic: test3    Partition: 3    Leader: 1       Replicas: 1,0,2,3       Isr: 1,0,2,3

③ 停止掉 hadoop103 的 kafka 进程,并查看 Leader 分区情况:

Partition为2的分区有4个副本,其中 Leader为3,假如 hadoop104 挂掉了,那么Partition为2 的Leader 就会重新选举,选举的规则为:在 ISR 中存活为前提,按照AR中排在前面的优先,即新的Leader将是1。

在这里插入图片描述

④ 停止掉 hadoop103 的 kafka 进程,并查看 Leader 分区情况:

Partition为1的分区有4个副本,其中 Leader为2,假如 hadoop103 挂掉了,那么Partition为2 的Leader 就会重新选举,选举的规则为:在 ISR 中存活为前提,按照AR中排在前面的优先,即新的Leader将是1。

在这里插入图片描述

⑤ 启动 hadoop104 的 kafka 进程,并查看 Leader 分区情况:

在这里插入图片描述

⑥ 启动 hadoop104 的 kafka 进程,并查看 Leader 分区情况:

在这里插入图片描述

⑦ 停止掉 hadoop102 的 kafka 进程,并查看 Leader 分区情况:

在这里插入图片描述

可以看到选举是按照AR中的顺序轮询选举的,而不是ISR中的顺序。

3. Follower故障

LEO(Log End Offset):每个副本的最后一个offset,LEO其实就是最新的 offset + 1。

HW(High Watermark):所有副本中最小的LEO 。

在这里插入图片描述

Follower故障:

① Follower发生故障后会被临时踢出ISR

② 这个期间Leader和Follower继续接收数据

③ 待该Follower恢复后,Follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉,从HW开始向Leader进行同步。

在这里插入图片描述

④ 等该Follower的LEO大于等于该Partition的HW,即Follower追上Leader之后,就可以重新加入ISR了。

在这里插入图片描述

4. Leader故障

LEO(Log End Offset):每个副本的最后一个offset,LEO其实就是最新的 offset + 1。

HW(High Watermark):所有副本中最小的LEO 。

在这里插入图片描述

Leader故障:

① Leader发生故障之后,会从ISR中选出一个新的Leader

② 为保证多个副本之间的数据一致性,其余的Follower会先将各自的log文件高于HW的部分截掉,然后从新的Leader同步数据。

在这里插入图片描述

注意:这只能保证副本之间的数据一致性,并不能保证数据不丢失或者不重复。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习网络模型——DenseNet模型详解与代码复现

深度学习网络模型——DenseNet模型详解与代码复现1、DenseNet概述2、DenseNet网络结构1、DenseNet中的DenseBlock模块2、DenseNet中的Transition模块3、DenseNet网络结构参数设置4、实验结果对比1、DenseNet概述 2、DenseNet网络结构 1、DenseNet中的DenseBlock模块 2、DenseNe…

内网穿透:针对小白的VSCode+云服务器+本地Ubuntu搭建GPU云服务器

前言 自己实验室的情况: 实验室拥有自己的GPU集群、工作站使用仅限于线下或者远程向日葵(不稳定、速度慢)拥有自己的廉价cpu轻量云服务器(阿里云服务器(2G2*cpu),大概40左右一年) 平时出差、在宿舍等需要远程操作,向…

Python学习笔记-数字类型

目录 1. 数字类型 1.1 整型 1.2 浮点数 1.3 复数 1.4 布尔类型 2. 常用内置数值计算函数库 3. 随机数函数 本文记录python中的基本数字类型信息,以及一些其他的相关知识点。 1. 数字类型 python中用于标识数字或者数值的数据类型,主要有如下分类…

​鸽群卫星(Flock)​介绍

鸽群卫星(Flock)是美国Planet公司[1]研制的3U遥感立方体卫星星座,单颗卫星重约5kg,也被称为“鸽子”(Dove)。鸽群星座主要有两类轨道:空际空间站释放420km高、52度倾角轨道(ISS&…

R语言基于决策树的银行信贷风险预警模型

引言 我国经济高速发展,个人信贷业务也随着快速发展,而个人信贷业务对提高内需,促进消费也有拉动作用。有正必有反,在个人信贷业务规模不断扩大的同时,信贷的违约等风险问题也日益突出,一定程度上制约着我…

力扣(LeetCode)115. 不同的子序列(C++)

动态规划 状态转移方程 f[i,j]{f[i−1,j]f[i−1,j]f[i−1,j−1]if s[i]t[j]f[i,j]\begin{cases} f[i-1,j]\\ f[i-1,j]f[i-1,j-1]&\text{if } s[i]t[j] \end{cases}f[i,j]{f[i−1,j]f[i−1,j]f[i−1,j−1]​if s[i]t[j]​ 无论选不选 s[i]s[i]s[i] , f[i][j]f[i…

解决报错:fatal: in unpopulated submodule *

目录 问题 解决 问题 今天想把两个 Git 工程合并成一个工程,尽管已经将其中一个工程的 .git 目录删除了,但是在合并提交时还是遇到了一个和子模块相关的报错,具体报错信息如下: fatal: in unpopulated submodule * 报错截图如下…

【iMessage苹果相册日历推位置推送】软件安装deviceToken是由APNs生成的

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

SpringBoot+html+vue模板开发

除了对某个表基本的增删改查以外&#xff0c;可能需要额外的增加操作&#xff0c;这里是通过按钮来实现的 1、新增一个测试按钮 <el-button type"primary" class"butT" click"test()">测试</el-button> 2、这个按钮绑定一个方法t…

Android 创建桌面组件Widget——构建应用微件(二)

Android 创建桌面组件Widget——构建应用微件&#xff08;二&#xff09;Android 创建桌面组件Widget——构建应用微件&#xff08;二&#xff09;概览使用 AppWidgetProvider 类接收应用微件广播 Intent固定应用微件设置预览图片完整代码Android 创建桌面组件Widget——构建应…

Spark学习(7)-SparkSQL函数定义

1 SparkSQL 定义UDF函数 目前在SparkSQL中&#xff0c;仅仅支持UDF和UDAF函数&#xff0c;python仅支持UDF。 1.1 定义方式 定义方式有两种&#xff1a; sparksession.udf.register() 注册的UDF可以用于DSL和SQL&#xff0c;返回值用于DSL风格&#xff0c;传参内的名字用于SQ…

如何在Odoo中添加水印?

为了防止信息的泄露&#xff0c;水印作为一种防泄密的方式&#xff0c;被使用的频率越来越高。 那么在Odoo中&#xff0c;如何添加水印呢&#xff1f;其实添加的方法有很多&#xff0c;如利用svg生成背景图&#xff0c;重复的dom元素覆盖等等。 本文主要讲解利用canvas输出背…

不懂单链表? 这篇文章就帮你搞明白

坚持看完&#xff0c;结尾有思维导图总结 链表对指针的操作要求不低链表的概念链表的特性链表的功能(最重要)定义和初始化头插头删细节说明尾插尾删寻找链表元素与打印链表在 某位置后插入删除在某位置的插入删除销毁链表链表的概念 什么是链表 官方概念&#xff1a;链表是一种…

链表(1)

我们以前学过的线性数据结构底层原理都是依托静态数组来实现的&#xff0c;今天我们讲学习一个最简单的动态数据结构---->链表&#xff01; 掌握链表有助于学习更加复杂的数据结构&#xff0c;例如&#xff1a;二叉树、trie 链表的优点是不需要处理固定的问题&#xff0c;…

mavon-editor的使用

vue3vitets下安装mavon-editor 3.0.0-beta版本&#xff0c;效果如下&#xff1a; 安装 //引入样式 import mavon-editor/dist/css/index.css; import mavonEditor from mavon-editor; app.use(router).use(mavonEditor).mount(#app);<template><div class"rich…

zabbix主动监控和被动监控

目录 一、环境准备 1、搭建zabbix基础环境 二、主动监控与被动监控介绍 三、设置客户端为主动监控 1、给web2主机安装zabbix_agent 2、修改主动监控配置 四、设置zabbix管理端主动监控 1、克隆模板 2、给目标主机绑定主动监控模板 3、查看主动监控的数据 一、环境准备…

【HIT-OSLAB-实验中的碎碎念】

文章目录应该养成的好习惯删除 替换 修改 内容时 记得留备份遇到问题要通过文字 图片 等多种途径去记录不同的项目应该在不同的文件夹进行处理代码文档 记得添加一些注释用于说明功能多输出有区别度的提示信息s找bug 先定位错误 再改当一份代码有不同版本的时候 记得说明每份代…

109376-05-8,Boc-QRR-AMC, Hepsin substrate

Boc-QRR-AMC是跨膜丝氨酸蛋白酶hepsin的底物&#xff0c;也用于测定酿酒酵母中的可辛(Kex2内蛋白酶)。Boc-QRR-AMC的库存解决方案最好在DMSO中准备。 编号: 187545中文名称: Hepsin substrate&#xff1a;Boc-Gln-Arg-Arg-7-氨基-4-甲基香豆素英文名: Boc-Gln-Arg-Arg-AMCCAS号…

全球No.1集装箱人工智能企业CIMCAI中集飞瞳,集装箱信息识别铅封号识别API免费,集装箱识别率99.98%高泛化性,全球两千+企业用户使用

全球No.1集装箱人工智能企业CIMCAI中集飞瞳&#xff0c;先进人工智能AI科技打造飞瞳引擎™AI集装箱检测云服务&#xff0c;集装箱信息识别铅封号识别API免费&#xff0c;集装箱识别率99.98%高泛化性&#xff0c;全球两千企业用户使用。CIMCAI中集飞瞳成熟港航人工智能核心技术及…

3年功能测试拿8K,被刚入职的应届生反超,其实你在假装努力

最近朋友给我分享了一个他公司发生的事 大概的内容呢&#xff1a;公司一位工作3年的测试工资还没有新人高&#xff0c;对此怨气不小&#xff0c;她来公司辛辛苦苦三年&#xff0c;三年内迟到次数都不超过5次&#xff0c;每天都是按时上下班&#xff0c;工作也按量完成&#xf…