Kafka全套核心术语
Kafka全套核心术语
一、基础角色
-
Producer 生产者
消息发送方。
你的perf_producer.py、robot_dog_sim.py、drone_sim.py都是生产者,往Kafka推送设备传感器消息。 -
Consumer 消费者
消息接收方。
你的perf_consumer.py,订阅主题,拉取消息做业务处理。 -
Broker
一台独立的Kafka服务实例(Kafka服务器/容器)。
多个broker组成Kafka集群;你docker跑的是单broker。负责接收、存储消息,响应读写请求。 -
ZooKeeper
Kafka依赖的协调服务。
保存集群元数据:broker列表、topic分区信息、leader副本、消费者offset等。
新版本Kafka已经逐步去掉ZK,但课程里一般还会提到。
二、消息与主题相关
-
Topic 主题
逻辑上的消息分类,相当于消息的文件夹。
生产者发消息必须指定topic;消费者订阅topic消费。
👉你的例子:device-data,专门存放设备上报数据。 -
Partition 分区
Topic的物理分片,Kafka最小读写单元。
- 一个topic拆成多个partition(你实验topic是6个分区);
- 同一条
key的消息固定进同一个partition,实现同key保序; - 分区分散在不同broker,提升并发读写能力。
- Replica 副本(replicas)
分区的备份,用来高可用。
一个分区有多份副本,放在不同broker,防止服务器宕机消息丢失。
副本分为两种:
- Leader(主副本):处理这个分区所有读写请求;生产者只写leader,消费者只读leader。
- Follower(从副本):被动同步leader的数据,不处理读写;leader挂掉,follower自动升级为新Leader。
- Message / Record 消息(记录)
Kafka里最小数据单元,由三部分组成:
key:消息键(你项目用deviceId做key,保证同设备消息进同一个分区)value:消息主体(你的设备DTO转成的JSON字符串)- metadata:offset、timestamp、partition等信息
- Offset 偏移量
分区内消息的序号,每个partition独立编号,从0开始递增。
作用:消费者靠offset记录读到哪一条消息(就是Offset持久化)。
三、消费者相关术语
- Consumer Group 消费者组
一组消费者,共享同一个group.id。
- 同一个topic的一个分区,只能被组内一个消费者消费;
- 组内消费者数量 ≤ 分区数量;多消费者并行消费不同分区,提升消费能力。
就是你之前做的rebalance实验的基础。
-
Rebalance 再平衡
消费者组内发生变化(新增/下线消费者、分区增减),触发分区重新分配给组内消费者。
会短暂停止消费,生产环境尽量避免频繁rebalance。 -
Offset Commit 提交偏移量
消费者处理完消息后,把当前消费位置(offset)提交到Kafka保存。
earliest:从分区最早的消息开始消费latest:只消费新产生的消息
四、高级概念
-
DLQ Dead Letter Queue 死信队列
死信主题。正常topic中多次处理失败、无法消费的消息,转发到DLQ,人工排查,避免阻塞正常消费。 -
CompletableFuture
SpringKafka发送消息返回的异步对象,whenComplete回调获取发送结果。 -
Ack(Acknowledgment)确认
生产者发送消息后,broker返回确认。
acks=1:leader副本写成功就返回确认(默认);acks=all:所有副本写完才返回,可靠性最高。 -
Retention 消息保留策略
消息不会永久保存,按时间/大小自动清理。比如默认保留7天,到期磁盘删除消息。
极简版:Kafka 核心关系(文字 + 简单Mermaid图)
✅一句话关系
1个Topic(主题)包含多个Partition(分区);1个Partition有多个副本Replica(1个Leader主副本 + 若干Follower从副本);副本放在不同Broker(服务器)上。
- Producer生产者 → 发消息到Topic
- 消息根据
key=deviceId路由到同一个Partition - 读写只走Partition的Leader副本,Follower只同步备份
- Consumer消费者组:一个消费者读一个Partition(读Leader)
文字层级(从上往下看)
Producer(生产者)
↓
Topic【主题】(device-data)
├─ Partition0【分区0】
│ ├ Leader副本 → Broker1(负责读写)
│ └ Follower副本 → Broker2(备份)
└─ Partition1【分区1】
├ Leader副本 → Broker2(负责读写)
└ Follower副本 → Broker3(备份)
↓
ConsumerGroup消费者组
Consumer1 读 Partition0
Consumer2 读 Partition1
重点规则(就4条,写报告)
- Topic是逻辑名字,不是服务器;Partition是Topic拆分出来的存储分片。
- 每个Partition有1个Leader,多个Follower副本,副本分散在不同Broker机器。
- Producer只写Leader;Consumer只读Leader;Follower只同步数据,不处理读写。
- 同一个key(deviceId)的消息,一定落到同一个Partition,实现同设备消息保序。
总结
生产者发送消息到Topic,Topic由多个分区Partition组成;每个分区存在多份副本(Leader主副本、Follower从副本),副本分布在不同Broker服务节点。生产者写入、消费者读取只访问Leader副本,Follower同步备份数据做容灾。消费者组内一个消费者负责消费一个分区。
Kafka核心术语简述:
- Broker:Kafka服务节点,多个Broker构成集群;
- Topic:逻辑主题,用于业务消息分类;
- Partition:Topic物理分片,是读写最小单元,同key消息进入同一分区,实现消息保序;
- Replica副本:分区的备份,分为Leader主副本(负责读写)、Follower从副本(同步数据,故障时晋升Leader),保障高可用;
- Producer生产者:发送消息;Consumer消费者:拉取消息;
- Offset:分区内消息序号,记录消费位置;
- ConsumerGroup消费者组:一组消费者共同消费Topic,一个分区同一时间只能被组内一个消费者消费;
- DLQ死信队列:存放无法正常处理的异常消息。
1193



被折叠的 条评论
为什么被折叠?



