Kafka常见面试问题

1、Kafka分区设计及主副本如何同步

Apache Kafka是一种分布式流处理平台,它使用分布式复制协议来实现高可用性和容错性。在Kafka中,每个主题(topic)都有一个或多个分区(partition),每个分区都有一组副本(replica),其中一个是主副本(leader),其余的是从副本(follower)。主副本负责处理来自消费者的所有读写请求,而从副本则扮演备份的角色,并在主副本出现故障时接管其职责。

主副本同步:

  • Kafka的每个分区都有一个指定的副本,称为"初始副本"(initial replica)。这个初始副本是由Kafka在创建分区时指定的。
  • 当消费者向Kafka发送消息时,消息首先被写入到该分区的初始副本中。
  • 初始副本收到消息后,会将其复制到其他从副本中,实现副本的同步。
  • 当所有的从副本都成功接收并存储了消息后,初始副本会向Kafka发送一个"消息已提交"(message committed)的响应给消费者。

2、Kafka如何选主

  • Kafka使用一种称为"领导者选举"(leader election)的机制来选出每个分区的领导者(主副本)。
  • 在Kafka集群中,每个节点都有一个选举代理(election proxy),它负责参与领导者选举过程。
  • 当一个分区创建时,初始副本被选为该分区的领导者。
  • 如果初始副本失效,选举代理会发现并通知其他存活的副本参与领导者选举。
  • 存活的从副本会投票选举一个新的领导者。获得超过一半票数的副本会被选为新的领导者。
  • 如果所有的从副本都失效,选举代理会重新选出新的初始副本作为领导者。

3、如果有多个broken故障,是会选哪个

Kafka的生产者使用一个负载均衡机制来分配消息到不同的broker。这个负载均衡机制可以基于各种因素,例如每个broker的可用带宽、处理能力、存储容量等。

当生产者向Kafka发送消息时,它会与Kafka的代理服务器(broker)建立连接,并由代理服务器负责将消息路由到正确的分区。代理服务器会根据负载均衡机制选择一个存活的分区,并将消息发送到该分区。如果多个broker出现故障,存活的代理服务器会选择一个存活的分区来处理消息。

因此,生产者并不直接选择发送消息到哪个broker,而是通过Kafka的负载均衡机制来自动分配消息到存活的broker上。这样可以确保消息的可靠性和容错性,并且可以有效地利用Kafka集群的资源。

4、kafka如何保证一致性

Kafka保持一致性的方式有很多,其中包括:

  1. 采用分布式副本集(replica set)来保证数据的一致性。Kafka将消息复制到多个副本中,当一个副本失效时,另一个副本可以接管它的工作,从而保证数据的完整性。
  2. Kafka至少保证消息被传递给消费者一次。生产者写入消息到Kafka时,会等待消息被持久化并复制到ISR(in-sync replica)中的副本,并返回一个确认(ack)给生产者。只有当所有ISR中的副本都完成了消息的复制后,消息才被认为是提交成功的,生产者才会收到确认。这样可以确保消息的可靠性,但也可能出现消息重复传递的情况。
  3. 消费者的消费位置(consumer offset)由消费者在消费消息时记录,并提交到Kafka,以便在重启或故障恢复后继续消费。Kafka会将消息的偏移量持久化,保证在故障发生时可以对未消费的消息进行重播。
相关推荐
jiayong232 小时前
AI架构师面试题库 - 完整汇总文档
人工智能·面试·职场和发展
不爱编程的小陈3 小时前
事务的进化:从MySQL单机事务到TiDB分布式事务的探究
分布式·mysql·tidb
he___H6 小时前
面试场景题
面试·职场和发展
ricardo19736 小时前
防抖节流进阶 + requestAnimationFrame:滚动与输入场景的性能优化
前端·面试
自进化Agent智能体7 小时前
拆解Hermes会话循环:一个目标如何变成可执行的代码
面试
是小王同学啊~8 小时前
Kafka 面试通关笔记:高频八股 + 生产实战 + 追问链路(上)
笔记·面试·kafka
Devin~Y9 小时前
从内容社区到AIGC客服:Spring Boot、Redis、Kafka、K8s、RAG的三轮大厂Java面试对话(附标准答案)
java·spring boot·redis·spring cloud·kafka·kubernetes·micrometer
Komorebi_99999 小时前
Day6:微调 vs RAG 场景区分(面试高频)
面试·职场和发展
英俊潇洒美少年9 小时前
Vue2 $set 深度解析 + 批量更新全套优化方案(原理+实战+踩坑+面试)
面试·职场和发展·wps
Xzh04239 小时前
Redis黑马点评 实战复盘与面试高频考点详解
java·数据库·redis·面试