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

news2024/11/29 2:31:44

【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

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

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

相关文章

Matplotlib绘图9种经典风格,你喜欢哪种?

学过Python的小伙伴都会知道,Matplotlib是Python生态最好用的可视化工具库,吹爆也不为过。👍 Matplotlib作为高度定制化的绘图工具,只要你使用Python编程便可完美绘制二维统计图表、三维图表、动态图表、交互图表,甚至…

找不到d3dx9_43.dll无法继续执行代码的几种解决方法

在工作或生活使用电脑都会遇到丢失dll文件应用无法启动的情况,比如你安装完一款你最喜欢的游戏在启动的时候提示系统缺少d3dx9_39.dll、d3dx9_40.dll、d3dx9_41.dll、d3dx9_42.dll、d3dx9_43.dll、xinput1_3.dll 文件而无法正常游戏,或你在工作的时候安装…

vue:vue2与vue3如何全局注册公共组件(包括涉及到的相关方法函数的讲解)

目录 第一章 vue2全局注册公共组件 1.1 方法一:逐个注册 1.2 方法二:批量注册 1.2.1 require.context()方法解释 第二章 vue3全局注册公共组件 1.1 方法一:逐个注册 1.2 方法二:批量注册 第一章 vue2全局注册公共组件 Vue…

Golang并发控制的三种方案

Channel Channel是Go在语言层面提供的一种协程间的通信方式&#xff0c;我们可以通过在协程中向管道写入数据和在待等待的协程中读取对应协程的次数来实现并发控制。 func main() {intChan : make(chan int, 5)waitCount : 5for i : 0; i < waitCount; i {go func() {intC…

【计算机网络体系结构】计算机网络体系结构实验-FTP实验

1. 2. 3. wireshark 第一行&#xff1a;帧Frame 545&#xff1a;要发送的数据块&#xff0c;所抓帧的序号为545&#xff0c;捕获字节数等于传送字节数&#xff1a;451字节第二行&#xff1a;源Mac地址为a4:bb:6d:6e:28:9a&#xff1b;目标Mac地址为24:00:fa:e4:df:d8第三行&…

安卓逆向案例——X酷APP逆向分析

X酷APP逆向分析 这里介绍一下两种不同的挂载证书的方法。 chls.pro/ssl无法在浏览器中下载证书是什么原因解决方法&#xff1a; 法一 1. 挂载系统分区为读写 使用正确的挂载点来挂载系统分区为读写&#xff1a; su mount -o remount,rw /dev/uijISjR/.magisk/block/syste…

Spring Boot连接Redis集群

1、问题写在前面 1.1、问题描述&#xff1a;Redis集群节点地址发现失败 Unable to connect to [172.17.0.4:7303]: connection timed out: /172.17.0.4:7303 1.2、解决方案&#xff1a; redis.conf 中添加配置 cluster-announce-ip 192.168.56.11 1.3、方案出处&#xff1a;…

何在 Vue3 中使用 Cytoscape.js 创建交互式网络图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Cytoscape.js集成到Vue应用中 应用场景介绍 Cytoscape.js是一个用于可视化复杂网络数据的JavaScript库。它提供了丰富的功能&#xff0c;包括节点和边的创建、布局算法、交互式操作等。本文将介绍如何在Vue应…

如何将办公文档压缩成rar格式文件?

压缩包格式是我们生活工作中常用到的文件格式&#xff0c;那么如何得到一个rar格式的压缩文件&#xff1f;或者说如何将文件压缩成rar格式而不是zip格式呢&#xff1f;今天我们来了解一下如何压缩为rar格式文件。 首先&#xff0c;下载并安装WinRAR&#xff0c;然后用鼠标选择需…

Flat Ads:互动广告助力开发者高效流量变现

Flat Ads作为掌握7亿独家开发者流量的全球化营销推广平台,始终致力于为全球广告主提供高效、精准的效果营销和品牌宣传服务,同时为发布商提供高效变现、最大化收益的一站式解决方案。 Flat Ads旗下的互动广告平台作为高效能广告媒介,通过丰富的广告形式和变现场景有效地提升开…

【Ubuntu下 qmqtt6.2编译及使用】

这里写自定义目录标题 一、编译二、使用 背景&#xff1a;最近用QT编写简单的HMI软件&#xff0c;mqtt通信&#xff0c;记录下编译过程&#xff0c;供参考。 一、编译 QT6.5.3 qmqtt6.2&#xff08;源码地址&#xff1a;https://github.com/qt/qtmqtt/tree/6.5.3&#xff09; …

工具与技术:如何使用工具创建和实现导航栏图标动效

这篇教程的目的主要是带领大家做UI交互的入门引导,让大家理解做交互动效的一些基本逻辑思维,利用原型交互动画做导航栏icon动画效果。 导航栏icon动效的详细教程&#xff1a; 即时设计 - 可实时协作的专业 UI 设计工具即时设计是一款支持在线协作的专业级 UI 设计工具&#x…

Linux入门攻坚——26、Web Service基础知识与httpd配置-2

http协议 URL&#xff1a;Uniform Resource Locator&#xff0c;统一资源定位符 URL方案&#xff1a;scheme&#xff0c;如http://&#xff0c;https:// 服务器地址&#xff1a;IP&#xff1a;port 资源路径&#xff1a; 示例&#xff1a;http://www.test.com:80/bbs/…

【mysql 安装启动失败】 没有网下 libssl.so.10 not found 如何解决?

问题描述&#xff1a; libssl.so.10 > not found libcrypto.so.10 > not found [rootmysql tools]# ls -l /usr/sbin/mysqld -rwxr-xr-x. 1 root root 64290024 Sep 14 2022 /usr/sbin/mysqld [rootmysql tools]# ldd /usr/sbin/mysqldlinux-vdso.so.1 (0x00007fff97105…

网络流量 数据包length计算

MTUMSSIP header(20 bytes)tcp header(20 bytes) lengthMTUEthernet header(14bytes) 其中MSS为Maximum Segment Size&#xff0c;即最大报文段长度&#xff0c;其受MTU大小影响&#xff0c;这里的MTU指的是三层的&#xff0c;二层的MTU固定为1500&#xff0c;不能修改。 MT…

SFF2004A-ASEMI无人机专用SFF2004A

编辑&#xff1a;ll SFF2004A-ASEMI无人机专用SFF2004A 型号&#xff1a;SFF1006A 品牌&#xff1a;ASEMI 封装&#xff1a;ITO-220AC 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;20A 最大循环峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;400V 最…

一种快速设计PCB外壳的方法

设计PCB外壳比较好用的工具是SW但是有时候需要快速设计外壳的情况下使用立创EDA的外壳设计功能很好用&#xff0c;设计完成之后可以直接导出STL文件&#xff1a; 可以看到设计的外壳还是蛮精美的&#xff1a; 特别注意&#xff0c;设计外壳的时候要考虑如何把PCB放进壳子中&…

市值3万亿英伟达的崛起:技术、坚持与市场的力量,厚积薄发的经典案例

在科技领域&#xff0c;英伟达&#xff08;NVIDIA&#xff09;的故事无疑是一个厚积薄发的经典案例。作为一家专注于图形处理单元&#xff08;GPU&#xff09;的公司&#xff0c;英伟达用31年的时间证明了技术的价值、计算的价值和坚持的价值。本文将详细探讨英伟达如何从一家市…

第7周作业——单片机定时器与串口通信的学习与应用

一、蜂鸣器 &#xff08;一&#xff09;蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件&#xff0c;常用来产生设备的按键音、报警音等提示信号&#xff0c;按照驱动方式可以分为如下两种&#xff1a; 1、有源蜂鸣器&#xff1a;内部自带振荡源&#xff0c;将正负极接上…

自动化测试:Autorunner的使用

自动化测试&#xff1a;Autorunner的使用 一、实验目的 1、掌握自动化测试脚本的概念。 2、初步掌握Autorunner的使用 二、Autorunner的简单使用 autoRunner使用方法 新建项目 a) 在项目管理器空白区域,右键鼠标,选择新建项目 b) 输入项目名后,点击[确定]. 在初次打开aut…