请解释 Apache Kafka 中的 Topic 概念,并说明它在 Kafka 中承担怎样的职责?
考察说明
考察对 Kafka 基本抽象 Topic 的理解及其在消息组织与流处理中的作用。
回答思路
- 【回答框架 1】Topic 是 Kafka 中用于发布和订阅消息的逻辑分类单元,本质上是一个命名的消息流或主题,生产者将消息写入特定 Topic,消费者从该 Topic 读取消息。
- 【回答框架 2】Topic 在 Kafka 中承担数据组织与隔离的职责,不同业务或数据类型可划分到不同 Topic,实现逻辑上的解耦与分类管理。
- 【回答框架 3】Topic 可被划分为多个分区(Partition),分区是实现水平扩展和并行处理的基础,每个分区是一个有序的、不可变的消息日志,消息追加写入并分配唯一偏移量。
- 【回答框架 4】Topic 还支持副本机制,分区副本跨 Broker 分布,提供数据冗余与高可用,消费者组内消费时,一个分区只被组内一个消费者消费,保证组内并行且有序。
- 【回答框架 5】从整体看,Topic 是 Kafka 存储和流处理的核心逻辑单元,它连接生产者和消费者,为数据流提供分类、分区、复制与并行消费的基础。
- 【关键点 1】Topic 是 Kafka 消息的逻辑分类和容器,以主题名区分不同消息流。
- 【关键点 2】Topic 由多个分区组成,分区实现数据并行处理和水平扩展。
- 【关键点 3】分区副本保证高可用,但需注意副本同步一致性。
- 【关键点 4】消费者组内分区分配保证有序消费,但跨分区不保证全局有序。
- 【易错点 1】不要将 Topic 与分区混淆,Topic 是逻辑概念,分区是物理存储和并行的基本单位。
- 【易错点 2】主题数过多或分区过多可能导致文件句柄和元数据开销大,需合理设计。
- 【易错点 3】未指定分区时,消息按 key 哈希或轮询方式分配,key 相同消息不保证负载均衡。