Broker是物理服务器节点,Topic是逻辑分类,Partition是Topic的物理分片,Replica是Partition的冗余副本;Broker承载Partition的Replica,Topic通过Partition实现分布式存储与并行处理,Replica保障高可用。

Broker、Topic、Partition 和 Replica 在 Kafka 中不是平级概念,而是层层嵌套、分工明确的分布式物理层级结构:Broker 是物理载体,Topic 是逻辑容器,Partition 是可分布的最小存储单元,Replica 是 Partition 的冗余实例。理解它们的关系,关键在于抓住“谁存哪儿、谁管谁、谁服务谁”。
Broker:集群里的物理服务器节点
Broker 是 Kafka 集群中真实运行的服务实例,对应一台机器(或一个容器/虚拟机),有唯一 broker.id。它不直接面向业务,而是作为底层基础设施提供消息收发、持久化和副本同步能力。
- 每个 Broker 独立管理本地磁盘上的日志文件(即 Segment 文件),不共享存储
- 多个 Broker 组成集群,彼此通过 ZooKeeper 或 KRaft 协调元数据(如哪个 Partition 的 Leader 在哪)
- Broker 本身不感知 Topic 名字,只按 Partition ID 存取数据;它只知道自己存了哪些 Partition 的哪些 Replica
Topic:纯逻辑分类,不占物理资源
Topic 是用户定义的消息类别名称(如 user-click、payment-event),本身不占用磁盘或内存。它只是一个路由标识和配置集合,真正落地的是它下面的 Partition。
- 创建 Topic 时指定分区数(num.partitions)和副本因子(replication.factor),Kafka 会据此生成对应数量的 Partition 及其 Replica
- 同一个 Topic 的不同 Partition 可以分散在不同 Broker 上,但一个 Partition 的所有 Replica 不会全落在同一台 Broker(避免单点失效)
- Producer 发送消息时指定 Topic 名,Kafka 根据 key 或轮询策略决定写入该 Topic 下的哪个 Partition
Partition:分布式存储与并行处理的基本单位
Partition 是 Topic 的物理分片,是 Kafka 实现水平扩展的核心。每个 Partition 是一个有序、不可变的追加日志(append-only log),对应一组 Segment 文件(.log + .index)。
立即学习“Java免费学习笔记(深入)”;
- 一个 Partition 必须且只能有一个 Leader Replica(对外提供读写),其余为 Follower Replica(仅同步)
- Partition 的物理位置由 Kafka 自动分配:比如 Topic A 有 3 个 Partition,副本因子为 2,则共生成 6 个 Replica,分布在至少 2 台 Broker 上(如 P0-0 在 Broker0,P0-1 在 Broker1;P1-0 在 Broker1,P1-1 在 Broker2……)
- 消费者消费时,订阅的是 Topic,但实际拉取数据是从某个 Partition 的 Leader 所在 Broker 获取——也就是说,Consumer 与 Broker 的连接,本质是与特定 Partition 的 Leader 建立连接
Replica:Partition 的冗余实例,保障高可用
Replica 是 Partition 的副本,不是独立实体,必须依附于某个 Partition。每个 Replica 对应一份完整的日志拷贝,存放在不同 Broker 的磁盘上。
- Replica 分为 Leader 和 Follower 两种角色,角色由 Controller 动态选举,不固定绑定 Broker
- Follower 不响应客户端请求,只从 Leader 拉取数据(fetch)并写入本地日志;当 Leader 所在 Broker 宕机,Controller 会在 ISR(In-Sync Replicas)集合中选新 Leader
- ISR 不等于所有 Replica:只有跟上 Leader 进度(延迟在阈值内)的 Follower 才被保留在 ISR 中;落后的 Replica 会被踢出,恢复后重新加入
简单说:Broker 是房子,Topic 是门牌号(不占地),Partition 是房间号(真有空间),Replica 是同一房间的多份装修图纸(一份主用,其余备用)。消息最终写进某 Partition 的 Leader 所在 Broker 的磁盘文件里,其他 Broker 上存的是它的 Replica —— 这就是 Kafka 分布式物理层级的真实映射。



















