面试题答案
一键面试副本机制基本原理
Kafka 中每个分区都有多个副本,这些副本分布在不同的 broker 上,用于提供数据冗余和高可用性。
副本类型
- 领导者副本(Leader Replica):每个分区有且仅有一个领导者副本。生产者发送的消息以及消费者读取的消息都直接与领导者副本交互。它负责处理所有的读写请求。
- 追随者副本(Follower Replica):除领导者副本外的其他副本为追随者副本。它们不处理客户端的读写请求,主要功能是从领导者副本同步数据,保持与领导者副本的数据一致性。
消息同步
- 生产者发送消息:生产者将消息发送到领导者副本所在的 broker。领导者副本接收到消息后,先将其写入本地日志,然后向生产者发送确认响应。
- 追随者副本同步:追随者副本通过定期向领导者副本发送 Fetch 请求来拉取新消息。领导者副本会根据追随者副本的请求,返回其尚未同步的消息。追随者副本接收到消息后,写入本地日志。
故障恢复
- 领导者副本故障:如果领导者副本所在的 broker 发生故障,Kafka 会从追随者副本中选举出一个新的领导者副本。选举过程通常由 Kafka 的控制器(Controller)负责,它会根据副本的 ISR(In - Sync Replicas,与领导者副本保持同步的追随者副本集合)状态来选择新的领导者。新领导者选举出来后,其他追随者副本会开始与新领导者同步数据。
- 追随者副本故障:如果某个追随者副本所在的 broker 发生故障,该副本会暂时从 ISR 中移除。当故障的 broker 恢复后,该追随者副本会重新加入 ISR,并开始与领导者副本同步数据,追赶落后的消息。