当前位置: 首页 > news >正文

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据-08

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据

  • 1. Kafka Broker 工作流程
    • 1.1 Zookeeper 存储的 Kafka 信息
    • 1.2 Kafka Broker总体工作流程
      • 1.2.1 Controller介绍
    • 1.3 Broker 重要参数
  • 2. 节点服役与退役
  • 3. Kafka副本

在这里插入图片描述

1. Kafka Broker 工作流程

1.1 Zookeeper 存储的 Kafka 信息

  1. 启动Zookeeper客户端
[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh
  1. 通过 ls 命令可以查看 kafka 相关信息
[zk: localhost:2181(CONNECTED) 2] ls /kafka

在这里插入图片描述

在这里插入图片描述

1.2 Kafka Broker总体工作流程

在这里插入图片描述

  1. Broker注册:每个Kafka Broker在启动时会向ZooKeeper注册自己,ZooKeeper维护一个活动Broker列表,这个列表便于集群中的各个Broker相互发现并进行通信。

  2. Leader选举: Controller负责选举分区的领导者。当一个分区的领导者副本不可用时,Controller会选择一个新的副本作为领导者。选举结果通过ZooKeeper更新,并通知所有相关的Broker。

  3. 监控: Controller会监控Broker节点的变化。

  4. Controller决定选举:选举规则:在isr中存活为前提,按照AR中排在前面的优先。例如ar[1,0,2], isr [1,0,2],那么leader就会按照1,0,2的顺序轮询

  5. Controller将节点信息上传到ZK

  6. Controller将领导者选举的结果和副本状态变更通知所有相关的Broker,确保它们有最新的元数据信息。

1.2.1 Controller介绍

在Kafka集群中,并不是每个Broker都有一个Controller,而是整个集群中只有一个活跃的Controller。这个Controller由一个Broker担任,其职责是管理和协调整个集群的元数据和状态变更。以下是关于Kafka Controller的详细介绍:

Kafka Controller职责

  1. 分区副本状态管理:
    领导者选举: 当一个分区的领导者副本不可用时,Controller负责选举新的领导者副本,确保分区始终有一个活跃的领导者来处理读写请求。
    副本同步: Controller监控副本的状态,并确保追随者副本与领导者副本保持同步。不同步的副本会被标记为“Out of Sync”(OOS)。
  2. Broker管理:
    Broker注册和注销: 当一个Broker加入或退出集群时,Controller会更新集群的元数据,并重新分配分区和副本,以确保负载均衡和高可用性。
    集群扩展和缩减: Controller处理Broker的增加或减少,进行相应的分区和副本重新分配。
  3. 分区重新分配:
    负载均衡: 当集群中负载不均衡时,Controller可以根据配置重新分配分区和副本,确保各个Broker的负载均衡。
    分区迁移: Controller协调分区和副本在不同Broker之间的迁移,实现高效的负载管理和故障恢复。
  4. 集群元数据管理:
    元数据更新: Controller管理集群范围内的所有元数据更新,包括主题创建、删除、配置变更等。
    通知Broker: 当元数据发生变化时,Controller通知所有相关的Broker,确保它们使用最新的配置信息。
  5. 故障检测和恢复:
    Broker故障检测: Controller定期检查Broker的状态,如果检测到某个Broker故障,它会触发相应的故障恢复机制。
    故障恢复: 在Broker故障的情况下,Controller重新分配该Broker上的分区和副本,确保消息的高可用性和数据的完整性。

Controller与Broker的关系

  • 控制器是一个特殊的Broker:虽然Controller执行管理和协调任务,但它本质上还是一个Broker,也处理正常的消息生产和消费请求。
  • 单一Controller:在任何时候,Kafka集群中只能有一个活跃的Controller。其他Broker在需要时可以通过选举成为Controller。

1.3 Broker 重要参数

在这里插入图片描述
在这里插入图片描述

2. 节点服役与退役

3. Kafka副本

// P31 TODO

相关文章:

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据-08

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据 1. Kafka Broker 工作流程1.1 Zookeeper 存储的 Kafka 信息1.2 Kafka Broker总体工作流程1.2.1 Controller介绍 1.3 Broker 重要参数 2. 节点服役与退役3. Kafka副本 1. Kafka Broker 工作流程 …...

如何恢复未格式化分区数据?看这里!

什么是未格式化分区? 未格式化或RAW文件系统的分区无法被Windows操作系统识别和挂载,因此,Windows会提示你进行格式化以创建新的文件系统。注意,不要进行格式化。通常,文件系统变为未格式化或RAW会出现以下常见错误消…...

通过“BOSS”精通比特币,深入认识私钥、账户和钱包

来源:币界原创 作者:636Marx 无论当今数字货币技术如何发展,认识区块链技术幕后的关键机制至关重要。无论您是新手还是经验丰富的数字货币从业者,掌握钱包地址、公钥和私钥的复杂性都有无可替代重要性。进入 BOSS Wallet,这是一款尖端的 Web…...

进程与线程的区别

进程(Process) 1:进程是操作系统分配资源的基本单位 2:每个进程都有自己独立的虚拟地址空间,虚拟地址空间映射真实物理地址 3:进程之间相互隔离,某一个进程的崩溃不会影响到其它进程 4&…...

【AI基础】第五步:纯天然保姆喂饭级-安装并运行chatglm3-6b

类似于 【AI基础】第三步:纯天然保姆喂饭级-安装并运行chatglm2-6b,有一些细节不一样。 此系列文章列表: 【AI基础】概览 【AI基础】第一步:安装python开发环境-windows篇_下载安装ai环境python 【AI基础】第一步:安装…...

【学习笔记】Elastic-Job和Quartz 实现企业级定时任务

Elastic-Job和Quartz 实现企业级定时任务 知识拆解框架整合Java高级玩法定时任务案例 第1章 课程介绍 课程的总体介绍,定时任务的应用场景和发展趋势,以及分布式走时任务的介绍 1-1、导学 1-2、为什么学习定时任务 1-3、定时任务技术发展趋势 1-4、主…...

舒适佩戴,享受沉浸式音乐体验,西圣AVA2耳机体验

平时不管是听音乐,还是打电话,戴上一副耳机都可以让我们获得更好的隐私性,并且在公共场所,比如办公室、车厢里,也可以获得属于自己的空间。现在市面上耳机的选择非常多,音质、续航和佩戴的舒适度是我们选择…...

c++学习-----内存管理

1. C/C内存分布 我们先来看下面的一段代码和相关问题 答案揭晓: 这里很多人会误认为*char2在常量区,这其实是错误的 因为: 首先在内存字符常量区分配一块内存空间放下”abcd\0”,然后在栈中分配一块连续的内存空间,…...

可视化数据科学平台在信贷领域应用系列七:自动机器学习(下篇)

在当今金融科技迅速发展的时代,自动机器学习(AutoML)逐步成为了信贷风控领域的重要工具。随着大数据和人工智能技术的进步以及信贷风险环境的快速变化,传统人工建模模式的时效性已经难以应对复杂多变的挑战。自动机器学习框架将数…...

OpenGL Super Bible 7th-Primitives, Pipelines, and Pixels图元、渲染管线与像素

简介 本文的原版为《OpenGL Super Bible 7th》,是同事给我的,翻译是原文+译文的形势。文章不属于机器直译,原因在于语言不存在一一对应的关系,我将尽可能的按照中国人看起来舒服的方式来翻译这些段子,如果段子让你感到身心愉悦,那还劳烦点个关注,追个更。如果我没有及时…...

SpringBoot3.0更新后,IDEA创建SpringBoot2.x项目

首先创建新项目 然后Next Type选图中对应的即可,先在这里选择JavaVersion为17,然后等会去修改这个jdk的版本,然后Next 在选择springboot版本时发现还是没有2.x的版本,继续选择一个没有后缀名的版本先,这里选择3.3.0,至…...

Linux开发讲课8--- linux的5种IO模型

一、这里IO是什么 操作系统为了保护自己,设计了用户态、内核态两个状态。应用程序一般工作在用户态,当调用一些底层操作的时候(比如 IO 操作),就需要切换到内核态才可以进行 服务器从网络接收的大致流程如下&#xff1…...

什么是云主机?

云主机是新一代的主机租借服务,它整合了高性能服务器与优质网络带宽,有用处理了传统主机租借价格偏高、服务品良莠不齐等缺陷,可全面满意中小企业、个人站长用户对主机租借服务低本钱,高牢靠,易办理的需求。   关于大…...

力扣上的经典问题:接雨水

力扣上的经典问题:接雨水 在众多的编程题库中,力扣(LeetCode)是一个非常受欢迎的平台,拥有大量的算法和数据结构练习题。其中,接雨水(Trapping Rain Water)问题因其巧妙的思路和广泛…...

双例集合(二)——双例集合的实现类之HashMap容器类

双例集合的常用实现类有HashMap和TreeMap两个,通过这两个类我们可以实现Map接口定义的容器,一般情况下使用HashMap容器类较多。 HashMap容器类是Map接口最常用的实现类,它的底层采用Hash算法来实现,这也就满足了键key不能重复的要…...

oracle-定时器(job)

--1分钟运行一次定时任务。sysdate为了定时任务即可生效。 DECLARE JOB NUMBER; BEGIN DBMS_JOB.SUBMIT(JOB,P_HJZ_HJZ_PJ_DDYTKAPB_INIT_JOB;,SYSDATE,sysdate1/24/60); COMMIT; END; / select * from user_jobs; --删除 begin DBMS_JOB.broken (462, false); DBM…...

cron.timezone

系统 date 数据库 show timezone插件 show cron.timezonealter system set cron.timezonePRC;show cron.timezone...

Hadoop+Spark大数据技术(测试)

1、九九乘法表 在下面的单元格中编写Scala程序&#xff0c;输出上三角形的九九乘法表&#xff0c;并运行。 for (i <- 1 to 9 reverse) {for (j <- 1 to i) {print(s"$j x $i ${i * j}\t")}println() } 2、单词计数 在下面的若干单元格中编写Spark程序&#…...

使用新语法连接Qt 5中重载的信号和槽

在使用Qt 5中的新信号和槽连接语法&#xff08;使用成员函数指针&#xff09;时&#xff0c;我遇到了一些问题。根据新的信号槽语法的描述&#xff0c;我尝试将以下代码&#xff1a; QObject::connect(spinBox, SIGNAL(valueChanged(int)),slider, SLOT(setValue(int)));改为&…...

梯度提升决策树(GBDT)的训练过程

以下通过案例&#xff08;根据行为习惯预测年龄&#xff09;帮助我们深入理解梯度提升决策树&#xff08;GBDT&#xff09;的训练过程 假设训练集有4个人&#xff08;A、B、C、D&#xff09;&#xff0c;他们的年龄分别是14、16、24、26。其中A、B分别是高一和高三学生&#x…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...