请描述在 Kafka 中创建 Topic 的常用方法,并说明除了创建之外,Topic 的管理通常还会涉及哪些操作或工具?
考察说明
考查对 Kafka Topic 生命周期管理的基本认知,包括创建方式与日常管理手段。
回答思路
- 【回答框架 1】Topic 是 Kafka 中消息分类的逻辑概念。创建 Topic 的主要方式有三种:通过命令行工具 kafka-topics.sh(或 kafka-topics.bat)执行创建操作;通过 Kafka AdminClient API 以编程方式创建;在较早版本中也可以通过自动创建机制,即生产者向不存在的 Topic 发送消息时自动创建。
- 【回答框架 2】对于命令行工具,典型命令如 kafka-topics.sh --bootstrap-server localhost:9092 --create --topic my-topic --partitions 3 --replication-factor 1,该命令会指定分区数和副本因子,副本因子不能超过可用 Broker 数量。
- 【回答框架 3】对于 AdminClient,可以用 Java 或其它语言创建 Topic,例如构造 NewTopic 对象后调用 createTopics 方法,这种方式适合自动化管理场景。
- 【回答框架 4】Topic 的管理操作包括查询 Topic 列表、查看 Topic 详细信息(分区、副本、ISR)、修改分区数、修改配置(如 retention.ms、segment.bytes)、删除 Topic,以及分区重分配或副本调整等。管理工具主要仍是命令行工具和 AdminClient,也常常配合监控工具或自研管理平台。
- 【关键点 1】创建 Topic 的命令行工具为 kafka-topics.sh,需指定分区数和副本因子。
- 【关键点 2】AdminClient API 提供了程序化创建和管理 Topic 的能力。
- 【关键点 3】Topic 管理包括查看、修改分区、配置调整、删除及分区重分配等。
- 【易错点 1】不要依赖生产环境中的自动创建 Topic 机制,应显式创建以控制分区和副本配置。
- 【易错点 2】修改分区数只能增加不能减少,初期设计需合理规划分区数。
- 【易错点 3】删除 Topic 需确保 broker 配置 delete.topic.enable=true,否则删除操作不生效。