#17 数据工程 中等

Kafka 在数据链路里通常扮演什么角色?分区与消费者组怎么理解?

Kafka消息队列CDC

🎯 考察意图

实时/近实时数仓常见组件。考察基本模型与「至少一次」语义意识。

📐 回答框架

  1. 角色:解耦生产消费、削峰、事件总线。
  2. 分区:并行与有序的基本单位。
  3. 消费者组:组内分摊分区,组间独立。
  4. 投递语义与幂等下游。

💬 参考答案(口述版)

在数据链路中,Kafka 常作:
- 业务事件总线(点击、订单)
- CDC 中转(DB → Kafka → 仓)
- 实时特征/告警的缓冲层

核心模型:Topic 分多个 Partition;单分区内有序。Producer 按 key 决定分区,同 key 通常同分区从而保序。

消费者组:同一 Group 内消费者分摊分区(一个分区同一时刻只被组内一个消费者消费);不同 Group 可独立重复消费同一 Topic(扇出)。

数据同学要关心:位点提交、重复消费(至少一次常见)→ 下游需幂等;延迟与堆积监控;分区数与并行度匹配。

🔍 关键词

分区有序消费者组位点至少一次幂等

💭 面试官可能的追问

追问 1:为什么说 Kafka 常常是至少一次?

消费者可能处理完业务后、提交 offset 前崩溃,重启会重复。端到端 exactly-once 需要事务/幂等设计,不能默认拥有。

⚠️ 常见踩坑

  • 用随机分区却期望全局有序
  • 下游无幂等,重复消费造成数翻倍

🧠 记忆锚点

分区是并行单位;消费者组扇出;按至少一次来设计幂等。