kafka面试题八股文
时间: 2025-02-07 07:10:08 浏览: 68
### 关于 Kafka 的常见面试问题及解答
#### 什么是 Apache Kafka?
Apache Kafka 是一个分布式流处理平台,能够实现高吞吐量的发布订阅消息系统。它不仅支持水平扩展还具备强大的持久化功能、容错机制和实时数据处理能力[^1]。
```java
// 创建Kafka生产者配置
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
// 初始化KafkaProducer实例
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
```
#### Kafka 中的主题 (Topic) 是什么?
主题是 Kafka 中的一个逻辑概念,用于分类存储不同类型的消息记录。每个主题可以被划分为多个分区(Partition),这些分区分布在集群的不同节点上以提高系统的并发性和可靠性。
#### 生产者如何向 Kafka 发送消息?
当生产者发送一条消息至特定主题时,该条目会被追加到对应分区的日志文件末尾;同时,每条日志项都有唯一的偏移量(Offset),可用于追踪消费进度。此外,生产者还可以指定键值来决定哪条消息应该进入哪个具体的分区。
```java
// 构建消息对象并设置其所属topic名称
ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", "hello world!");
// 使用send方法异步提交消息给broker服务器
producer.send(record);
// 刷新缓存中的所有待发请求,并阻塞直到完成
producer.flush();
// 当不再需要使用此连接时记得关闭资源释放网络套接字等
producer.close();
```
#### 消费者的组内协调是如何工作的?
消费者通常会加入某个消费者组(Group),同一分区内只有一个成员能读取其中的数据。如果某位参与者失败,则其余存活下来的伙伴将会重新分配那些未被认领的任务——这一过程被称为再平衡(Rebalance)。
#### Partition Reassignment 工具的作用是什么?
Partition Reassignment 工具允许管理员手动调整各 broker 上 topic-partitions 的分布情况,从而优化负载均衡或迁移数据。这有助于解决因硬件故障等原因造成的不均匀现象。
阅读全文
相关推荐


















