【大数据之Kafka】七、Kafka Broker之Kafka副本

news2024/10/6 6:42:38

1 副本基本信息

  Kafka 副本可以提高数据可靠性。分为Leader 和 Follower;Kafka 生产者只会把数据发往 Leader,然后 Follower 找Leader 进行同步数据。
  Kafka 默认副本 1 个,生产环境一般配置为 2 个,保证数据可靠性;太多副本会增加磁盘存储空间,增加网络上数据传输,降低效率。

  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选举流程

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

Zookeeper集群与Kafka集群间的通信:

(1) Kafka集群的每个broker启动之后都会向zookeeper进行注册。

(2) 注册完毕之后开始选择controller节点(争先抢占方式)。

(3) 选举出来的controller监听/brokers/ids/节点的变化。

(4) 监控完毕之后根据选举规则开始真正的选举Leader。

(5) Controller将节点的Leader信息和isr信息写到zookeeper上。

(6) 其它的controller节点会冲zookeeper上拉取数据进行同步(防止controllerLeader挂了,随时上位)。

(7) 生产者往集群发送数据,发送数据之后Leader主动与Follower进行同步(底层通过LOG进行存储,实际为segment,分为.log文件和.index文件)再进行应答。

(8) 当Leader节点挂了之后controller监控到节点变化。

(9) Controller从zookeeper上拉取Leader信息和isr信息。

(10) Controller根据拉取的信息和选举规则再重新选举Leader。

(11) 选举出来新的Leader之后更新zookeeper中的信息。
在这里插入图片描述
(0)启动hadoop105中的Kafka。

bin/kafka-server-start.sh -daemon ./config/server.properties

(1)创建一个新的topic,4个分区,4个副本

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --create --topic lyx1 --partitions 4 --replication-factor 4

(2)查看Leader分布情况

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --describe --topic lyx1

在这里插入图片描述
(3)停止掉hadoop105的kafka进程,并查看Leader分区情况

bin/kafka-server-stop.sh

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --describe --topic lyx1

在这里插入图片描述
(4)停止掉hadoop104的kafka进程,并查看Leader分区情况
在这里插入图片描述
(5)启动hadoop105的kafka进程,并查看Leader分区情况

bin/kafka-server-start.sh -daemon ./config/server.properties

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --describe --topic lyx1

在这里插入图片描述
(6)启动hadoop104的kafka进程,并查看Leader分区情况
在这里插入图片描述
  综上,ISR为和 Leader 保持同步的 Follower 集合,即表示存活的集合。Replicas为AR,在选举Leader时以Isr中从存活为前提,按AR中顺序进行轮询。

3 Leader和Follower故障处理

LEO(Log End Offset):每个副本的最后一个offset,LEO其实就是最新的offset + 1。
HW(High Watermark):所有副本中最小的LEO 。

3.1 Follower故障

(1)初始:Leader先接受数据再进行同步到副本,此时消费者能看到的最大offset为4,即HW-1,LEO和HW如下:
在这里插入图片描述
(2)Follower发生故障后被临时踢出ISR。
在这里插入图片描述
(3)期间Leader和Follower继续接受数据。
在这里插入图片描述
(4)故障Follower恢复后,Follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取去掉(认为是没有验证过的),从HW开始向Leader进行同步。
在这里插入图片描述
(5)等该Follower的LEO大于等于该Partition的HW,即Follower追上Leader后,就可以重新加入ISR。
在这里插入图片描述

3.2 Leader故障

(1)初始:
在这里插入图片描述
(2)Leader发生故障后被临时踢出ISR,从ISR中选一个新的Leader。
在这里插入图片描述
(3)为保证多个副本之间的数据一致性,其余的Follower会先将各自的log文件高于HW的部分截掉,然后从新的Leader同步数据。

  PS:这只能保证副本之间的数据一致性,并不能保证数据不丢失或者不重复。
  故障Leader中的数据5、6、7可能会丢失。
在这里插入图片描述

4 分区副本分配

kafka 的分区数大于服务器台数,在 kafka底层分配存储副本情况:
(1)创建16分区,3个副本:

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --create --partitions 16 --replication-factor 3 --topic second

(2)查看分区和副本情况:

bin/kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092 --describe --topic second

在这里插入图片描述

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

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

相关文章

SAP-PP:基础概念笔记-4(物料主数据视图)

文章目录 前言一、基本视图二、分类视图三、销售视图四、采购五、生产计划和执行视图六、总工厂数据/存储七、质量管理八、会计九、成本系统创建示例:创建一个齿轮物料的主数据事务代码:MM01,另一种方式spro->xxxx 总结 前言 物料主数据为许多组织创…

linux并发服务器 —— 项目实战(九)

阻塞/非阻塞、同步/异步 数据就绪 - 根据系统IO操作的就绪状态 阻塞 - 调用IO方法的线程进入阻塞状态(挂起) 非阻塞 - 不会改变线程的状态,通过返回值判断 数据读写 - 根据应用程序和内核的交互方式 同步 - 数据的读写需要应用层去读写 …

DX底图还原

直接定位到这个地方 我们可以看到他有一个Bn函数,其中传入的参数有n,e,r,t 分别是这些东西 但是我们只需要还原的列表就得看是哪一段是咯 An((i (i r.split("/"))[i.length - 1]).split(".")[0]) 发现是他之后我们就直接把这个函数扣下来&…

【vue2第十三章】自定义指令 自定义v-loading指令

自定义指令 像 v-html,v-if,v-for都是vue内置指令,而我们也可以封装自定义指令,提升编码效率。 什么是自定义指令? 自己定义的一些指令,可以进行一些dom操作,扩展格外的功能。比如让图片懒加载…

第七章:敏捷开发工具方法-part2-CI/CD工具介绍

文章目录 前言一、CI-持续集成1.1 安装部署gitlab 二、gitlab CI配置三、jenkins实现CI / CD3.1 安装jenkins3.2 配置CI3.3 配置CD3.4 其他构建方式1、定时构建2、指定参数构建3、webhook自动根据git事件进行构建 前言 什么是CI/Cd? CI-Continuous integration&…

web前端——简单的网页布局案列

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 目录 问题背景 解决样例 …

[Vue3 博物馆管理系统] 使用Vue3、Element-plus tabs组件构建选项卡功能

系列文章目录 第一章 定制上中下(顶部菜单、底部区域、中间主区域显示)三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 第三章 使用Vue3、Element-plus走马灯组件构建轮播图 第四章 使用Vue3、Element-plus tabs组件构建选项卡功能 [第五…

Tomcat多实例和负载均衡动静分离

一、Tomcat多实例部署 安装jdk 设置jdk环境变量 安装tomcat 配置Tomcat环境变量 修改端口号 修改tomcat中startup.sh和shutdown.sh文件添加tomcat环境变量 启动Tomcat中的startup.sh 浏览器测试 http://192.168.30.100:8080 http://192.168.30.100:8081 二、负载均衡动静分离…

GPT 内部 — I : 了解文本生成

年轻的陀思妥耶夫斯基被介绍给生成AI,通过Midjourney创建 一、说明 我经常与不同领域的同事互动,我喜欢向几乎没有数据科学背景的人传达机器学习概念的挑战。在这里,我试图用简单的术语解释 GPT 是如何连接的,只是这次是书面形式。…

Elasticsearch:使用 ESRE 和生成式 AI 了解 TLS 日志错误

作者:DAVID HOPE 本博客介绍了 Elasticsearch 相关性引擎 (ESRE​​) 及其 Elastic Learned Sparse Encoder 功能的新颖应用,特别是在日志分析中。 最近发布的 Elasticsearch Relevance Engine™ (ESRE™) 包含一系列重要功能,可增强搜索能力…

2023移动软件开发实验5

2023年夏季《移动软件开发》实验报告 姓名和学号?本实验属于哪门课程?中国海洋大学23夏《移动软件开发》实验名称?实验5:高校新闻网博客地址?XXXXXXXGithub仓库地址?https://github.com/enfantsRichesDepr…

深入理解联邦学习——联邦学习的定义

分类目录:《深入理解联邦学习》总目录 假设有两个不同的企业 A A A和 B B B,它们拥有不同的数据。比如,企业 A A A有用户特征数据,而企业 B B B有产品特征数据和标注数据。这两个企业按照GDPR准则是不能粗暴地把双方数据加以合并的…

【C++】函数重载 ① ( 函数重载概念 | 函数重载判断标准 - 参数个数 / 类型 / 顺序 | 返回值不是函数重载判定标准 )

文章目录 一、函数重载1、函数重载概念2、函数重载判断标准 二、代码示例1、代码示例 - 函数重载2、代码示例 - 返回值不是函数重载判定标准 博客总结 : 重载函数 : 使用 相同 的 函数名 , 定义 不同 的 函数参数列表 ;判定标准 : 只有 函数参数 的 个数 / 类型 / 顺序 的不同…

Pandas常用指令

astype astype的作用是转换数据类型,astype是没办法直接在原df上进行修改的,只能通过赋值的形式将原有的df进行覆盖,即df df.astype(dtype) astype的基本语法 DataFrame.astype(dtype, copyTrue, errorsraise) dtype参数指定将数据类型转换…

Pytorch从零开始实战01

Pytorch从零开始实战——MNIST手写数字识别 文章目录 Pytorch从零开始实战——MNIST手写数字识别环境准备数据集模型选择模型训练可视化展示 环境准备 本系列基于Jupyter notebook,使用Python3.7.12,Pytorch1.7.0cu110,torchvision0.8.0&…

Python综合案例(动态柱状图)

一、基础柱状图 基本代码: """ 演示基础柱状图的开发 """ from pyecharts.charts import Bar from pyecharts.options import LabelOpts # 使用Bar构建基础柱状图 bar Bar() # 添加x轴的数据 bar.add_xaxis(["中国", &q…

谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行

环境: Win10 专业版 谷歌浏览器 版本 116.0.5845.141(正式版本) (64 位) L盾加密终端 问题描述: 谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行,要全部结束谷歌浏览器进程&…

pear admin 新增模块流程

pear admin 新增模块流程 一、界面新增模块二、增加路由情况三、增加前端页面四、增加db Module配置 一、界面新增模块 增加主菜单 增加子菜单 对应底层表:rt_power 二、增加路由情况 增加路由代码 from flask import render_template from common.utils.righ…

如何实现24/7客户服务自动化?

传统的客服制胜与否的法宝在于人,互联网时代,对于产品线广的大型企业来说:单靠人力,成本大且效率低,相对于产品相对单一的中小型企业来说:建设传统客服系统的成本难以承受,企业客户服务的转型已…

计算机网络初识

目录 1、计算机网络背景 网络发展 认识 "协议" 2、网络协议初识 OSI七层模型 TCP/IP五层(或四层)模型 3、网络传输基本流程 网络传输流程图 数据包封装和分用 4、网络中的地址管理 认识IP地址 认识MAC地址 1、计算机网络背景 网络发展 在之前呢&…