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

kafka的架构和工作原理

目录

Kafka 架构

Kafka 工作原理

Kafka 数据流

Kafka 核心特性

总结

Kafka 架构

1. 生产者(Producer)

2. 消费者(Consumer)

3. 主题(Topic)

4. 分区(Partition)

5. 副本(Replica)

6. 代理(Broker)

7. ZooKeeper(旧版本)/KRaft(新版本)

Kafka 工作原理

1. 消息生产

2. 消息存储

3. 消息消费

4. 领导者选举

5. 集群协调


Kafka 架构

Kafka 是一个分布式流处理平台,核心架构包括以下组件:

  1. Producer(生产者)

    • 负责将消息发布到 Kafka 的 Topic 中。

  2. Consumer(消费者)

    • 从 Topic 订阅并消费消息。

  3. Broker(服务器)

    • Kafka 集群中的每个节点都是一个 Broker,负责消息的存储和转发。

  4. Topic(主题)

    • 消息的逻辑分类,生产者将消息发送到特定 Topic,消费者从 Topic 订阅消息。

  5. Partition(分区)

    • 每个 Topic 可以分为多个 Partition,分区是 Kafka 并行处理的基本单位,每个分区是一个有序、不可变的消息序列。

  6. Replica(副本)

    • 每个 Partition 可以有多个副本,分布在不同的 Broker 上,确保数据的高可用性和容错性。

  7. Leader 和 Follower

    • 每个 Partition 有一个 Leader 副本和多个 Follower 副本,Leader 负责处理读写请求,Follower 从 Leader 同步数据。

  8. Zookeeper

    • 用于管理 Kafka 集群的元数据、Broker 状态、Leader 选举等。


Kafka 工作原理

  1. 消息发布

    • Producer 将消息发送到指定的 Topic,消息根据分区策略(如轮询、哈希等)分配到某个 Partition。

  2. 消息存储

    • 消息以追加(Append)的方式写入 Partition 的日志文件(Log Segment),Kafka 不会修改或删除已写入的消息。

  3. 消息复制

    • Leader Partition 将消息复制到所有 Follower Partition,确保数据冗余和高可用性。

  4. 消息消费

    • Consumer 从 Partition 拉取消息,每个 Consumer 属于一个 Consumer Group,组内的 Consumer 共同消费一个 Topic 的消息,每个 Partition 只能被组内的一个 Consumer 消费。

  5. Offset 管理

    • Consumer 通过 Offset 记录消费进度,Kafka 将 Offset 存储在内部 Topic(__consumer_offsets)中,确保消费状态可恢复。

  6. 日志清理

    • Kafka 提供两种日志清理策略:

      • 日志删除(Log Retention):根据时间或大小删除旧数据。

      • 日志压缩(Log Compaction):保留每个 Key 的最新值,适用于 Key-Value 场景。

  7. 高可用性

    • 通过副本机制和 Leader 选举实现高可用性。如果 Leader 失效,Zookeeper 会从 ISR(In-Sync Repl

相关文章:

kafka的架构和工作原理

目录 Kafka 架构 Kafka 工作原理 Kafka 数据流 Kafka 核心特性 总结 Kafka 架构 1. 生产者(Producer) 2. 消费者(Consumer) 3. 主题(Topic) 4. 分区(Partition) 5. 副本(Replica) 6. 代理(Broker) 7. ZooKeeper(旧版本)/KRaft(新版本) Kafka 工作…...

游戏引擎学习第100天

仓库:https://gitee.com/mrxiao_com/2d_game_2 昨天的回顾 今天的工作重点是继续进行反射计算的实现。昨天,我们开始了反射和环境贴图的工作,成功地根据法线显示了反射效果。然而,我们还没有实现反射向量的计算,导致反射交点的代…...

机器学习:朴素贝叶斯分类器

贝叶斯决策论是概率框架下实施决策的基本方法,对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。 贝叶斯定理是贝叶斯决策论的基础,描述了如何根据新的证据更新先验概率,贝叶斯定理&…...

打开Visual Studio Code的时候发现未检测到适用于linux的windows子系统,那么该问题要如何解决?

两个月没有使用vscode编写代码,今天使用的时候发现了以上的问题导致我的vscode无法编写程序,接下来我将本人解决该问题的思路分享给大家。 首先我们要清楚WSL是适用于linux的window的子系统,是一个在Windows 10\11上能够运行原生Linux二进制可…...

力扣24题——两两交换链表中节点

#题目 #代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ clas…...

android launcher拖动图标释放错位

由于为了设备流畅把所有动画效果设置为0.5,不设置为0是因为锁屏在开机时会有闪黑屏的现象。在此背景下,测试发现在拖动桌面图标时,在图标动画过程中错位时释放图标,则图标会留在错位的位置,不会自动对齐。 原因就是动…...

window ssh免密码输入

生成本地公钥 打开dos,使用以下命令手动生成一个公钥: ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\aero/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same pas…...

2024年博客之星年度评选—主题文章创作评审文章得分公布

博客之星活动地址:https://www.csdn.net/blogstar2024 创作影响力评审入围名单:https://blogdev.blog.csdn.net/article/details/145189549 目录 主题文章创作评审得分排名 主题文章创作说明 主题文章评选说明 创作影响力评审主题文章创作评审目前排名 博…...

vscode插件Remote - SSH使用教程

Remote - SSH 是一款非常实用的 Visual Studio Code (VSCode) 扩展插件,它允许开发者通过SSH连接到远程服务器,并像在本地一样进行代码编辑和调试。这意味着你可以直接在VS Code中打开位于远程机器上的文件夹,并利用本地安装的VS Code功能,如语法高亮、智能感知、Git集成等…...

自学人工智能大模型,满足7B模型的训练和微调以及推理,预算3万,如何选购电脑

如果你的预算是 3万元人民币,希望训练和微调 7B 参数规模的人工智能大模型(如 LLaMA、Mistral 等),你需要一台高性能的深度学习工作站。在这个预算范围内,以下是推荐的配置: 1. 关键硬件配置 (1) GPU (显卡…...

github不翻墙就可以访问

目录 简介资料准备windows平台设置下载运行git设置firefox设置 ubuntu平台设置下载启动服务设置系统代理git设置firefox设置证书 注意事项 简介 由于github访问不稳定,严重影响了国内软件开发,在网上搜索并验证了一些方法.现在整理出来一个可以正常使用的方法, 在windows和Lin…...

十大知识领域中涉及到的工具与技术(三)

简介 整理下十大知识领域中使用到 “ 数据表现 ” 里面所包含的工具与技术,以及在那些过程中有使用。 具体的一些工具与技术 工具与技术—————————————描述1.亲和图用于对大量创意进行分组的技术。与心智图相似。针对某个问题,产生出可联成…...

在nodejs中使用RabbitMQ(三)Routing、Topics、Headers

示例一、Routing exchange类型direct,根据消息的routekey将消息直接转发到指定队列。producer.ts 生产者主要发送消息,consumer.ts负责接收消息,同时也都可以创建exchange交换机,创建队列,为队列绑定exchange&#xff…...

设计模式全解(含代码实例)

目录 设计模式概念耦合与解耦 常见-5种全部-23种创建型模式(Creational Patterns)单例模式(Singleton Pattern)工厂方法模式(Factory Method Pattern):抽象工厂模式(Abstract Factor…...

springboot019-爬虫基于网页开发和数据抓取技术的在线新闻聚合平台的设计与实现

💕💕作者: 小九学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm&#xf…...

#渗透测试#批量漏洞挖掘#LiveBos UploadFile 任意文件上传漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 漏洞背景 漏洞成因 影响评估 检测方案 …...

【分布式架构理论3】分布式调用(1):负载均衡

文章目录 零、三种不同的负载均衡一、常见行业负载均衡方案1. 电商与互联网服务2. 金融与支付系统3. 云计算与分布式存储 二、负载均衡策略概述1. 无状态负载均衡(强调公平性)2. 有状态的负载均衡(强调正确性) 三、 总结 零、三种…...

如何安装和运行Zonos:详细步骤指南

如何安装和运行Zonos:详细步骤指南 1. 安装依赖2. 克隆 Zonos 仓库3. 创建 Python 虚拟环境4. 安装 Zonos5. 运行 Zonos6. 总结 Zonos 是一个基于 Python 的语音合成工具,它结合了先进的深度学习技术和语音生成模型,能够生成高质量的语音输出…...

docker学习---第3步:docker实操大模型

文章目录 1.Images2.Container3.DockerfileENTRYPOINT和CMDCOPY和ADDLABLE、EXPOSE和VOLUME卷中的数据是如何做数据备份的? ARG和ENVHEALTHCHECK 跟着b站 胖虎遛二狗学习 Docker动手入门 | 大模型工程师必备技能 (🎉已完结&…...

记录第一次在windows环境编译libuvc库 踩的坑

最近遇到windows下编译libuvc库,实现经usb连接的摄像头拍摄采集。绕了一大圈,记录一下。 首先,作为新手,肯定需要参考大神资料,但是还是踩了坑。 要在windows 环境下安装libuvc的驱动并确保可用,需要经过一系列流程&a…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来&#xf…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&#x1f…...

【网络安全】开源系统getshell漏洞挖掘

审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言: 类加载器 1. …...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时,需要使用外部低速晶振...