Kafka 在数据链路里通常扮演什么角色?分区与消费者组怎么理解?
Kafka消息队列CDC
考察意图
实时/近实时数仓常见组件。考察基本模型与「至少一次」语义意识。
回答框架
- 角色:解耦生产消费、削峰、事件总线。
- 分区:并行与有序的基本单位。
- 消费者组:组内分摊分区,组间独立。
- 投递语义与幂等下游。
参考答案(口述版)
在数据链路中,Kafka 常作:
- 业务事件总线(点击、订单)
- CDC 中转(DB → Kafka → 仓)
- 实时特征/告警的缓冲层
核心模型:Topic 分多个 Partition;单分区内有序。Producer 按 key 决定分区,同 key 通常同分区从而保序。
消费者组:同一 Group 内消费者分摊分区(一个分区同一时刻只被组内一个消费者消费);不同 Group 可独立重复消费同一 Topic(扇出)。
数据同学要关心:位点提交、重复消费(至少一次常见)→ 下游需幂等;延迟与堆积监控;分区数与并行度匹配。
关键词
分区有序消费者组位点至少一次幂等
面试官可能的追问
追问 1:为什么说 Kafka 常常是至少一次?
消费者可能处理完业务后、提交 offset 前崩溃,重启会重复。端到端 exactly-once 需要事务/幂等设计,不能默认拥有。
常见踩坑
- 用随机分区却期望全局有序
- 下游无幂等,重复消费造成数翻倍
记忆锚点
分区是并行单位;消费者组扇出;按至少一次来设计幂等。