消息队列面试题, Kafka 中 Zookeeper 的作用?
消息队列面试题, Kafka 中 Zookeeper 的作用?
QA
Step 1
Q:: Kafka 中 Zookeeper 的作用是什么?
A:: Zookeeper 在 Kafka 中主要有以下几个作用:1) 管理和协调 Kafka 集群中的元数据,包括 broker 列表和主题的分区及副本信息。2) 进行 leader 选举,即在某个 broker 宕机时,选举新的 leader。3) 存储和管理消费者组的 offset 信息。4)
协调集群中 broker 的状态,确保数据的一致性和可靠性。
Step 2
Q:: Kafka 中的分区(Partition)是什么?
A:: 分区是 Kafka 中用于实现高吞吐量和扩展性的一个关键概念。每个主题(Topic)可以被分成多个分区,每个分区是一个有序的、不可变的消息队列。分区允许并行处理消息,从而提高系统的吞吐量。此外,分区还支持数据的副本存储,以提高容错性。
Step 3
Q:: Kafka 中的副本(Replica)和 ISR(In-
Sync Replica)是什么?
A:: 副本是 Kafka 用于保证数据高可用性的一种机制。每个分区都有一个 leader 和若干个 follower,follower 即为分区的副本。ISR 是与 leader 保持同步的副本列表,即在副本中的数据和 leader 一致。Kafka 使用 ISR 确保数据的可靠性和一致性。当 leader 宕机时,从 ISR 中选举新的 leader。
Step 4
Q:: Kafka 的生产者(Producer)是如何工作的?
A:: 生产者负责将消息发送到 Kafka 集群中的特定主题。它将消息分配到特定的分区,可以根据轮询、消息的键值或自定义的分区器进行分配。生产者发送消息时可以选择同步或异步方式。同步方式下,生产者等待 Kafka 的确认,适合对数据可靠性要求较高的场景;异步方式下,生产者在消息发送后立即返回,提高了性能。
Step 5
Q:: Kafka 的消费者(Consumer)是如何工作的?
A:: 消费者从 Kafka 中读取消息,通常属于某个消费者组。每个消费者组中的消费者分摊读取分区的消息,以实现负载均衡。消费者会周期性地提交它们的偏移量(offset),记录它们已经消费到哪个位置。Kafka 提供多种消费模式,如自动提交偏移量和手动提交偏移量,以适应不同的消费需求。