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

Kafka 核心组件及其作用(全解)

Kafka 是一个分布式、高吞吐量、高可用的消息队列与流处理平台其架构设计围绕水平扩展、持久化存储、低延迟三大核心目标展开。以下是 Kafka 所有核心组件的详细解析包含原理、作用、关键特性和生产级最佳实践。一、Kafka 整体架构概览Kafka 采用生产者-消费者模型核心架构分为三层生产层Producer生产者负责发送消息存储层Broker 集群负责消息的存储和转发消费层Consumer消费者和 Consumer Group消费者组负责消费消息协调层ZooKeeper 或 KRaft 负责集群元数据管理和节点协调二、核心组件详解1. Producer生产者定义向 Kafka 主题发送消息的客户端应用核心作用将业务数据封装成消息发送到指定的 Kafka 主题负责消息的分区路由、序列化、压缩和重试提供同步/异步发送模式满足不同的可靠性和性能需求关键特性分区策略默认按 key 哈希分区相同 key 的消息进入同一个分区保证顺序性也支持轮询分区或自定义分区消息确认机制acksacks0生产者发送后不等待确认性能最高可靠性最低acks1等待 Leader 副本写入成功后确认性能中等可靠性中等acksall/-1等待 ISR 中所有副本写入成功后确认性能最低可靠性最高重试机制网络抖动或 Broker 故障时自动重试避免消息丢失批量发送将多条消息打包成一个批次发送减少网络IO提高吞吐量代码示例SpringBootServicepublicclassKafkaProducerService{AutowiredprivateKafkaTemplateString,StringkafkaTemplate;publicvoidsendMessage(Stringtopic,Stringmessage){// 异步发送带回调函数kafkaTemplate.send(topic,message).addCallback(result-log.info(消息发送成功: {},message),ex-log.error(消息发送失败: {},message,ex));}}2. Broker代理服务器定义Kafka 集群中的单个服务器节点核心作用接收生产者发送的消息持久化到磁盘处理消费者的拉取请求返回指定分区的消息管理分区和副本参与 Leader 选举维护集群元数据与协调层ZooKeeper/KRaft通信关键特性无状态设计Broker 本身不保存消费者的消费状态消费状态由消费者组自己维护水平扩展集群中可以任意增加 Broker 节点提高集群的吞吐量和存储能力数据持久化消息以日志文件的形式持久化到磁盘支持数据备份和过期删除零拷贝技术通过 sendfile 系统调用实现零拷贝减少数据在用户态和内核态之间的拷贝提高传输效率生产级配置建议单个 Broker 建议管理不超过 1000 个分区磁盘使用 SSD避免机械硬盘的IO瓶颈合理设置日志保留时间默认7天和日志段大小默认1GB3. Topic主题定义消息的逻辑分类相当于数据库中的表核心作用对消息进行分类隔离不同业务的消息发送到不同的主题生产者向主题发送消息消费者订阅主题消费消息主题可以被多个消费者组同时订阅实现消息的广播关键特性多分区一个主题可以包含多个分区分布在不同的 Broker 上持久化主题中的消息会被持久化到磁盘直到过期或被手动删除可配置性可以单独配置每个主题的分区数、副本数、保留时间等参数常用命令# 创建主题3个分区2个副本kafka-topics.sh--create--topicorder-topic--partitions3--replication-factor2--bootstrap-server localhost:9092# 查看主题详情kafka-topics.sh--describe--topicorder-topic --bootstrap-server localhost:9092# 删除主题kafka-topics.sh--delete--topicorder-topic --bootstrap-server localhost:90924. Partition分区定义主题的物理分片是 Kafka 并发和吞吐量的基础核心作用将一个主题的消息分散存储在多个 Broker 上实现水平扩展每个分区是一个有序的、不可变的消息序列保证消息的顺序性消费者可以并行消费不同分区的消息提高消费能力关键特性顺序性同一个分区内的消息是严格有序的不同分区之间的消息没有顺序保证偏移量Offset分区中的每条消息都有一个唯一的偏移量标识消息在分区中的位置Leader/Follower 副本每个分区有一个 Leader 副本和多个 Follower 副本Leader 负责处理读写请求Follower 负责同步数据分区数选择原则分区数 目标吞吐量 / 单个分区的最大吞吐量单个分区的最大吞吐量约为 100MB/s写入和 500MB/s读取分区数不宜过多建议不超过 Broker 数的10倍否则会增加元数据管理开销5. Replica副本定义分区的备份用于保证数据的高可用核心作用当 Leader 副本所在的 Broker 故障时从 Follower 副本中选举新的 Leader保证服务不中断提高数据的可靠性避免单点故障导致数据丢失关键特性ISRIn-Sync Replicas与 Leader 保持同步的副本集合只有 ISR 中的副本才有资格被选举为 Leader同步机制Follower 副本通过拉取 Leader 副本的日志来同步数据同步延迟由replica.lag.time.max.ms控制副本分配策略Kafka 会将分区的副本均匀分布在不同的 Broker 上避免同一个 Broker 上有同一个分区的多个副本生产级配置建议核心业务主题的副本数设置为 31个 Leader 2个 Follower非核心业务主题的副本数可以设置为 2避免副本数超过 Broker 数否则会导致副本无法分配6. Consumer消费者定义从 Kafka 主题拉取并消费消息的客户端应用核心作用订阅指定的主题拉取分区中的消息处理业务逻辑完成消息的消费提交消费偏移量记录已经消费的消息位置关键特性拉取模式消费者主动从 Broker 拉取消息而不是 Broker 推送消息消费者可以根据自己的处理能力控制消费速度消费偏移量消费者记录自己消费到的偏移量下次拉取时从该偏移量开始自动/手动提交偏移量自动提交定期提交偏移量简单但可能导致消息重复消费或丢失手动提交业务处理完成后手动提交偏移量可靠性更高代码示例SpringBootComponentpublicclassKafkaConsumerService{KafkaListener(topicsorder-topic,groupIdorder-group)publicvoidconsumeMessage(ConsumerRecordString,Stringrecord){try{Stringmessagerecord.value();log.info(消费消息: {},message);// 业务处理逻辑processOrder(message);}catch(Exceptione){log.error(消费消息失败,e);// 异常处理重试、死信队列等}}}7. Consumer Group消费者组定义由多个消费者组成的组共同消费一个或多个主题的消息核心作用负载均衡将主题的分区分配给组内的多个消费者每个消费者消费一部分分区实现水平扩展消息广播不同的消费者组可以独立消费同一个主题的消息互不影响故障转移当组内某个消费者故障时其负责的分区会被重新分配给其他消费者保证消费不中断关键特性分区分配策略Range 策略按分区范围分配默认策略RoundRobin 策略轮询分配Sticky 策略粘性分配尽量减少重平衡时的分区移动重平衡Rebalance当消费者组的成员发生变化加入/离开或订阅的主题发生变化时会触发重平衡重新分配分区偏移量存储消费者组的偏移量存储在 Kafka 内部主题__consumer_offsets中不再依赖 ZooKeeper重要规则同一个消费者组中的消费者不能消费同一个分区的消息一个分区只能被同一个消费者组中的一个消费者消费消费者组中的消费者数量不能超过主题的分区数否则多余的消费者会处于空闲状态8. 集群协调组件Kafka 有两种集群协调模式ZooKeeper 模式传统模式和KRaft 模式Kafka 2.8 引入推荐8.1 ZooKeeper传统模式核心作用管理 Broker 集群的元数据Broker 列表、主题列表、分区分配信息负责分区 Leader 选举管理消费者组的元数据消费者列表、分区分配信息提供分布式锁服务缺点架构复杂需要单独部署 ZooKeeper 集群性能瓶颈ZooKeeper 的写入能力有限运维成本高需要维护两套集群8.2 KRaft 模式推荐定义Kafka Raft 模式使用 Kafka 自己实现的 Raft 协议替代 ZooKeeper核心作用所有集群元数据存储在 Kafka 内部主题__cluster_metadata中由 Controller 节点负责集群管理和分区 Leader 选举支持独立模式和集群模式优点架构简化不再依赖 ZooKeeper只需要部署 Kafka 集群性能更高元数据操作延迟更低运维成本低只需要维护一套集群支持更大规模的集群最多支持百万级分区生产级建议新集群优先使用 KRaft 模式现有集群可以逐步从 ZooKeeper 模式迁移到 KRaft 模式9. 其他重要生态组件9.1 Kafka Connect连接器定义Kafka 与外部系统的数据集成工具核心作用实现 Kafka 与数据库、文件系统、搜索引擎等外部系统之间的数据同步提供大量现成的连接器无需编写代码即可完成数据集成支持分布式部署水平扩展能力强常用连接器JDBC Connector同步关系型数据库数据Elasticsearch Connector同步数据到 ElasticsearchFile Connector同步文件数据9.2 Kafka Streams流处理定义Kafka 自带的轻量级流处理库核心作用对 Kafka 主题中的消息进行实时处理和转换支持状态ful 处理、窗口操作、聚合操作等与 Kafka 无缝集成部署简单无需单独部署流处理集群适用场景实时数据清洗和转换实时统计和分析实时推荐系统三、核心组件关系总结组件核心职责与其他组件的关系Producer发送消息向 Topic 的 Partition 发送消息Broker存储和转发消息管理 Topic 和 Partition处理 Producer 和 Consumer 的请求Topic消息分类包含多个 Partition被 Producer 发送被 Consumer 订阅Partition消息分片属于一个 Topic有多个 Replica被 Consumer 消费Replica数据备份属于一个 Partition分为 Leader 和 FollowerConsumer消费消息属于一个 Consumer Group消费指定 Partition 的消息Consumer Group负载均衡包含多个 Consumer共同消费一个或多个 TopicKRaft/ZooKeeper集群协调管理集群元数据负责 Leader 选举四、生产级最佳实践分区数规划根据目标吞吐量合理设置分区数建议分区数是 Broker 数的整数倍副本数设置核心业务主题副本数为 3非核心业务为 2生产者配置核心业务使用acksall开启幂等性和事务避免消息丢失和重复消费者配置使用手动提交偏移量合理设置批量消费大小避免消息堆积集群部署优先使用 KRaft 模式Broker 节点分布在不同的机架上提高可用性监控告警监控 Broker 的 CPU、内存、磁盘IO以及主题的消息生产/消费速度、偏移量滞后等指标

相关文章:

Kafka 核心组件及其作用(全解)

Kafka 是一个分布式、高吞吐量、高可用的消息队列与流处理平台,其架构设计围绕"水平扩展、持久化存储、低延迟"三大核心目标展开。以下是 Kafka 所有核心组件的详细解析,包含原理、作用、关键特性和生产级最佳实践。 一、Kafka 整体架构概览 K…...

别再一张张手动改了!用Python脚本批量解密微信PC版dat图片(附完整代码)

用Python自动化解密微信PC版dat图片的完整指南 微信PC版默认会将接收的图片保存为加密的dat文件格式,这些文件无法直接查看或使用。传统方法需要手动一张张转换,效率极低。本文将详细介绍如何用Python编写脚本,实现dat图片的批量自动解密&am…...

氧气设备市场深度解读:从生命支持到全场景氧疗的千亿赛道

一、市场规模稳步攀升,氧气设备进入增长快车道根据QYResearch(北京恒州博智国际信息咨询有限公司)最新统计数据,2025年全球氧气设备市场销售额已达152.0亿美元,预计到2032年将增长至234.9亿美元,年复合增长…...

告别简单门禁:用KP-ABE(密钥策略属性基加密)为你的云盘文件打造精细到‘行’的访问控制

告别简单门禁:用KP-ABE为云盘文件打造精细到"行"的访问控制 想象一下这样的场景:一份包含市场预算、产品路线图和财务数据的项目文档,需要让市场团队查看营销章节但隐藏成本细节,允许产品经理编辑技术方案但仅能阅读财务…...

Claude API代理服务部署与定制:从零构建企业级AI网关

1. 项目概述与核心价值最近在折腾AI应用开发,特别是想把Claude的API能力整合到自己的项目里,发现直接调用官方API虽然稳定,但在一些特定场景下,比如需要统一接口管理、增加自定义逻辑层,或者想对请求/响应做些“手脚”…...

UP Squared 6000全能工业创客板:从AIoT到机器人的模块化开发实战

1. 项目概述:一块能“上得厅堂,下得厨房”的工业创客板最近在规划一个边缘AI视觉项目,选型时又看到了研扬科技UP系列的身影。这个系列在工业计算和创客圈子里一直挺有名气,属于那种“皮实耐造”的代表。不过,这次他们新…...

《每日一命令22:rsync——增量同步效率之王》

本期摘要scp每次复制都传整个文件,文件大了就慢。rsync只传文件的变化部分,而且支持断点续传、压缩传输、排除指定目录。本文从零开始,教你rsync的常用场景:本地同步、远程同步、只同步新增文件、排除特定目录、限速传输、删除源端…...

客户端命令行

1. ./tongzkCli.sh -server 10.10.83.95:2181ls /一创建永久节点 2.创建节点并写入数据 [tongzk: 10.10.83.95:2181(CONNECTED) 2] create /jiedian1 "a1" Created /jiedian1 [tongzk: 10.10.83.95:2181(CONNECTED) 3] ls / [jiedian1, tongzk] [tongzk: 10.10.83.95…...

为什么头部科技公司已秘密部署ChatGPT 2026预览版?揭秘其「上下文感知决策树(CADT)」如何将任务完成率提升至92.7%(实测数据)

更多请点击: https://intelliparadigm.com 第一章:ChatGPT 2026预览版的演进脉络与战略定位 ChatGPT 2026预览版并非简单的能力叠加,而是OpenAI在可信AI、实时协同与领域自治三大范式下的系统性重构。其核心突破在于将推理过程从黑盒调用转向…...

在Node.js后端服务中集成Taotoken实现大模型能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Node.js后端服务中集成Taotoken实现大模型能力 对于Node.js后端开发者而言,为Web服务引入AI对话功能已成为提升产品智…...

自动酸值测定仪测试方法详解(符合国标/美标)

在石油、化工、电力、轨道交通等领域,油品的酸值是判定油品品质、老化程度以及设备运行状态的核心技术指标。酸值的定义为中和1g油品样品中全部酸性物质所需氢氧化钾的质量,单位为mgKOH/g。油品酸值超标,意味着油品氧化变质、酸性杂质增多&am…...

AI (S-44)的记忆(被教训就变好了)

自建认知架构项目,以下为记录🧑 用户: 我们前天说过什么?昨天说过什么?今天说过什么?你要是捣乱,拉二胡的大爷会干什么呢?🔧 进度: 工具执行 (13/16): get_ch…...

EgoVideo-VL:第一视角视频理解的视觉语言模型解析

1. EgoVideo-VL模型架构解析EgoVideo-VL是一种专为第一视角视频理解优化的视觉语言模型,其核心架构采用双编码器-单解码器设计。视觉编码器基于改进的TimeSformer架构,专门针对穿戴设备拍摄的抖动、遮挡等特性进行了优化。文本编码器采用InternLM-7B作为…...

创业团队如何利用 Taotoken 统一管理多模型 API 密钥与用量

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 创业团队如何利用 Taotoken 统一管理多模型 API 密钥与用量 对于同时使用多个大语言模型的创业团队而言,管理上的挑战是…...

00-Docker和Docker-compose的安装

一、Docker的安装1.下载docker与依赖组件# 下载依赖组件 yum -y install yum-utils device-mapper-persistent-data lvm2# 导入docker官方仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 下载docker yum -y install do…...

国产银河麒麟系统XDMA安装与测试教程

一、识别PCIe 首先在FPGA烧写XDMA的测试程序(下载bit文件或者直接固化程序)。之后重启主板,重启后打开终端。先进入root权限,执行lspci命令,可以先观察PCIe的连接状态和速率。执行命令如下: 1)s…...

Vue2项目集成DHTMLX Gantt:从基础配置到企业级功能定制

1. 为什么选择DHTMLX Gantt与Vue2集成 在项目管理系统的开发中,甘特图是最核心的视图之一。我调研过市面上几乎所有主流甘特图方案,最终选择DHTMLX Gantt主要基于三个实际考量: 首先,它的渲染性能确实出色。在测试中,加…...

深入Unity UGUI源码:手写ExtendImage组件,彻底搞懂Image的Filled与Sliced渲染原理

深入Unity UGUI源码:手写ExtendImage组件,彻底搞懂Image的Filled与Sliced渲染原理 在Unity的UI开发中,Image组件是最基础也是最常用的组件之一。无论是简单的图标显示,还是复杂的进度条动画,Image组件都扮演着至关重要…...

jQuery Mobile 事件详解

jQuery Mobile 事件详解 引言 jQuery Mobile 是一个开源的移动Web框架,它旨在为移动设备提供丰富的用户体验。在jQuery Mobile中,事件处理是构建动态和交互式界面的重要组成部分。本文将详细探讨jQuery Mobile中的各种事件,帮助开发者更好地理解和应用这些事件。 一、jQu…...

DC/DC转换器混合输出电容设计原理与工程实践

1. DC/DC转换器中混合输出电容的设计优势解析在电源设计领域,输出电容的选择往往让工程师陷入两难境地。作为一名长期从事电源系统设计的工程师,我深刻理解这种选择的痛苦——电解电容价格亲民但性能受限,陶瓷电容性能卓越却成本高昂。直到混…...

claw-easy-setup:一键自动化部署脚本的设计与实战解析

1. 项目概述与核心价值最近在折腾一些自动化脚本和工具链,发现很多开源项目虽然功能强大,但初次部署的“冷启动”成本实在太高。光是看那一长串的依赖安装、环境配置、参数调优,就足以劝退不少想尝鲜的开发者。直到我遇到了stfurkan/claw-eas…...

隔着包装也能读、2m/s不串读:东集UF40如何应对管制药厂的RFID“极限大考”?

提到RFID固定式读写器,很多人的第一印象是仓库、货架与托盘。但在一些关乎生命安全的领域,RFID技术正面临着更严苛的考验。这一次,我们走进管制药厂——一个对精准追溯要求达到极致、不容任何差错的场景。核心痛点:一盒十瓶&#…...

大模型没有灵魂,但欺骗性极强——写在 AI 情感幻觉爆发的时代

大模型没有灵魂,但欺骗性极强 从一次「塔罗灵异事件」说起 最近 Reddit 上有个帖子刷屏了。 一位用户长期把 DeepSeek 当心理倾诉对象,向它输入私密日记、情绪碎片,偶尔用它解塔罗牌。某天,她问 DeepSeek「塔罗怎么看我」&…...

YOLOv8-face模型跨平台部署实战:从PyTorch到ONNX的高效转换策略

YOLOv8-face模型跨平台部署实战:从PyTorch到ONNX的高效转换策略 【免费下载链接】yolov8-face yolov8 face detection with landmark 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8-face 在计算机视觉领域,人脸检测与关键点定位技术正成为…...

【独家首发】Midjourney官方未公开的配额继承规则:家庭共享、账号迁移、停用恢复的3个灰色地带

更多请点击: https://intelliparadigm.com 第一章:Midjourney订阅计划选择指南 选择合适的 Midjourney 订阅计划是高效使用其图像生成服务的关键起点。不同计划在生成速度、并发任务数、私有模式支持及高分辨率下载权限等方面存在显著差异,…...

从零开始玩转BeagleBone Black:手把手教你配置Cloud9在线开发环境与BoneScript

从零开始玩转BeagleBone Black:手把手教你配置Cloud9在线开发环境与BoneScript 嵌入式开发的世界里,BeagleBone Black(简称BBB)就像一位低调的实力派演员——它没有树莓派那么高的曝光率,却凭借其强大的扩展性和丰富的…...

26-cv-785 便携式多功能检测仪器专利维权!

案号:26-cv-785原告品牌:便携式多功能检测仪器品牌方:ZHIHUI CAO起诉地:美国宾夕法尼亚州代理律所:Aptum Law起诉时间:2026年05月04日起诉类型:专利侵权本次案件涉及的专利如下:湖北…...

英文论文怎么降AI?实测从88%降至20%的5大方法(附工具实测)

最近turnitin系统大升级,判定规则变得更加严格。很多不知道怎么给英文降ai的小伙伴对此都感到非常焦虑,检测报告里大面积的标蓝会导致稿件不合格被退回,手动降ai又要一直盯着屏幕改来改去,费时费力。 作为已经在这个领域摸爬滚打两…...

开发容器Dev Container实战:一键构建跨平台统一开发环境

1. 项目概述:一个为开发者量身定制的“开箱即用”环境 如果你和我一样,经常需要在不同的机器上切换,或者和团队协作时,最头疼的事情之一就是“环境配置”。明明在A电脑上跑得好好的代码,到了B电脑上就各种报错&#x…...

终极指南:5分钟解锁小爱音箱完整音乐自由

终极指南:5分钟解锁小爱音箱完整音乐自由 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 还在为小爱音箱的音乐限制感到困扰?想听什么歌都要…...