news 2026/9/1 20:33:05

5 分钟搞懂 Kafka 核心概念:Topic、Partition、Broker 到底是什么?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5 分钟搞懂 Kafka 核心概念:Topic、Partition、Broker 到底是什么?

提到 Kafka,很多人第一反应是“消息队列”“高吞吐”,但上手时总会被Topic、Partition、Broker这三个核心概念绕晕——它们到底是做什么的?相互之间是什么关系?今天咱们用 5 分钟,结合生活场景把这些概念彻底讲透。

先搞懂一个前提:Kafka 是“消息中转站”

在讲具体概念前,先建立一个基础认知:Kafka 的核心作用是“接收、存储、转发消息”,就像一个大型的“快递中转站”。

比如电商平台的订单系统,用户下单后会产生“订单创建”消息,这个消息需要发给库存系统、支付系统、物流系统。如果让订单系统直接对接三个系统,一旦某个系统故障,就会影响整个流程。

这时 Kafka 就派上用场了:订单系统只需要把“订单创建”消息发给 Kafka,剩下的转发工作全由 Kafka 负责,库存、支付等系统从 Kafka 里拿消息就行。而 Topic、Partition、Broker,就是支撑这个“中转站”运转的核心组件。

核心概念1:Topic——消息的“分类文件夹”

定义:给消息打标签,实现“分类存储”

Topic 直译是“主题”,你可以把它理解成电脑里的“分类文件夹”——不同类型的消息,要放进不同的文件夹里,避免混乱。

比如在电商场景中,我们可以创建三个 Topic:

  • topic_order_create:专门存“订单创建”相关的消息;

  • topic_stock_change:专门存“库存变动”相关的消息;

  • topic_payment_result:专门存“支付结果”相关的消息。

这样一来,订单系统只往topic_order_create发消息,库存系统只从topic_stock_change取消息,各司其职,不会拿错。

关键特性:“多生产者、多消费者”

一个 Topic 可以接收多个“生产者”(比如订单系统、退款系统都可能发消息到订单相关 Topic)的消息;同时,多个“消费者”(比如库存系统、数据分析系统)也可以从同一个 Topic 里取消息——相当于一个文件夹,多人可以存,多人可以取。

核心概念2:Partition——Topic 的“子文件夹”,实现“并行与扩容”

如果一个 Topic 里的消息太多(比如每天百万级订单消息),只用一个“文件夹”存会很慢:存消息要排队,取消息也要排队。这时候就需要“分拆”——Partition 就是 Topic 的“子文件夹”,把一个 Topic 的消息拆分成多个 Partition 存储。

核心作用:并行处理,提升吞吐

Kafka 的核心性能优化就来自 Partition,它的规则很关键:

  1. 消息按顺序存于 Partition:每个 Partition 内部的消息是“有序的”(按发送时间排序,有唯一编号 offset),但不同 Partition 之间的消息顺序不保证。

  2. 多 Partition 并行读写:生产者可以同时往一个 Topic 的多个 Partition 发消息;消费者也可以同时从多个 Partition 取消息——相当于把“一个大任务”拆成“多个小任务”并行处理,吞吐能力直接翻倍。

举个例子:Topic 拆成 3 个 Partition 的效果

假设topic_order_create拆成 3 个 Partition(编号 0、1、2),订单系统发消息时,Kafka 会根据“订单 ID”的哈希值,把不同订单的消息分配到不同 Partition:

  • 订单 ID=1001 → Partition 0;

  • 订单 ID=1002 → Partition 1;

  • 订单 ID=1003 → Partition 2;

  • 订单 ID=1004 → 哈希后又回到 Partition 0。

这样一来,3 个 Partition 可以同时接收消息,库存系统也能同时从 3 个 Partition 取消息,效率直接提升 3 倍。如果消息量再涨,还能继续增加 Partition 数量(注意:Partition 数量只能增不能减)。

核心概念3:Broker——Kafka 的“服务器节点”,实现“分布式存储”

有了 Topic 和 Partition,消息要存在哪里?答案是 Broker。Broker 就是一台运行 Kafka 服务的“服务器节点”,相当于整个“快递中转站”里的“具体仓库”。

关键特性:集群部署,高可用

实际使用中,Kafka 不会只用一台 Broker,而是会部署多台 Broker 组成“集群”,原因有两个:

  1. 分担存储压力:一个 Topic 的多个 Partition 会分散存储在不同 Broker 上。比如 3 个 Partition 可以存在 3 台 Broker 上,每台 Broker 只存 1 个 Partition,避免单台服务器存太多数据。

  2. 容错备份(副本机制):为了防止某台 Broker 故障导致数据丢失,每个 Partition 会创建多个“副本”(比如 1 个主副本 + 2 个从副本),副本会存放在不同 Broker 上。主副本负责读写,从副本同步主副本的数据,一旦主副本所在 Broker 故障,从副本会自动顶上。

三者关系:一张图搞懂

用一个形象的比喻总结:

  • Broker= 快递中转站的“仓库”(多间仓库组成集群);

  • Topic= 仓库里的“大货架”(比如“生鲜货架”“电子货架”);

  • Partition= 大货架上的“小格子”(把大货架拆成多个小格子,方便并行存取);

  • 消息= 放在小格子里的“快递包裹”。

    核心逻辑:生产者把“包裹”(消息)放进指定“大货架”(Topic)的“小格子”(Partition)里,“小格子”分散在不同“仓库”(Broker)中;消费者从对应的“小格子”里取“包裹”,实现高效的消息传递。

5 分钟总结:必须记住的 3 个关键点

  1. Topic 是消息的“分类标识”,解决“消息该往哪放”的问题,实现消息分类;

  2. Partition 是 Topic 的“并行单元”,解决“消息太多存不下、取不快”的问题,通过分拆提升吞吐;

  3. Broker 是 Kafka 的“节点载体”,通过集群和副本机制,解决“数据存哪里”和“数据丢了怎么办”的问题,实现高可用。

搞懂这三个概念,就相当于掌握了 Kafka 的“骨架”——后续的生产者、消费者、副本机制等知识点,都是基于这个骨架延伸的。下一篇我们可以再聊聊 Kafka 的生产者如何发消息、消费者如何取消息,感兴趣的话记得关注~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 12:23:36

【JavaSE】十一、Stack Queue Deque PriorityQueue Map Set

文章目录Ⅰ. Stack(不推荐使用了☠)Ⅱ. QueueⅢ. DequeⅣ. PriorityQueue堆排序Ⅴ. MapⅥ. SetⅠ. Stack(不推荐使用了☠) 常见方法如下所示: 其中 peek() 就相当于是 std::stack 中的 top()。 注意事项: 在…

作者头像 李华
网站建设 2026/9/1 14:51:38

蚌埠住了,Java面试居然卷到了JDK源码级别!

作为Java开发者,面试肯定被问过多线程。对于它,大多数好兄弟面试前都是看看八股文背背面试题以为就OK了;殊不知现在的面试官都是针对一个点往深了问,你要是不懂其中原理,面试就挂了。可能你知道什么是进程什么是线程&a…

作者头像 李华
网站建设 2026/9/2 8:34:40

别再白忙活!数电发票不能作废,红冲这些要点要注意!

自2024年12月1日数电发票在全国正式推广以来,这种“无需领用、智能赋额、全程电子化”的新型发票,已成为企业财务的日常工具。它不仅简化了开票流程,更通过税务数字账户实现了发票信息自动流转,但随之而来的“红冲操作”却让不少财…

作者头像 李华
网站建设 2026/9/1 21:18:38

ComfyUI-MultiGPU分布式显存优化实战指南

为什么你的AI项目总是卡在显存瓶颈? 【免费下载链接】ComfyUI-MultiGPU This custom_node for ComfyUI adds one-click "Virtual VRAM" for any GGUF UNet and CLIP loader, managing the offload of layers to DRAM or VRAM to maximize the latent spac…

作者头像 李华
网站建设 2026/9/2 5:15:45

B站缓存转换神器:一键解锁本地视频播放新体验

B站缓存转换神器:一键解锁本地视频播放新体验 【免费下载链接】m4s-converter 将bilibili缓存的m4s转成mp4(读PC端缓存目录) 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 还在为B站缓存的m4s文件无法直接播放而烦恼吗?m4s-conver…

作者头像 李华
网站建设 2026/9/1 14:55:12

客户端连接Clickhouse连不上解决方案

Telnet连接ClickHouse失败的解决方案‌根据错误信息Connection refused,结合搜索结果,以下是详细排查步骤:1. ‌基础网络连通性验证‌Ping测试‌: bash Copy Code ping 172.20.6.27 若无响应,说明网络链路故障&#xf…

作者头像 李华