Apache Kafka 面试应答指南
Apache Kafka 核心知识详解与面试应答指南
一、Apache Kafka 概述
Apache Kafka 作为一款分布式流处理框架,在实时构建流处理应用领域发挥着关键作用。其最广为人知的核心功能,便是作为企业级消息引擎被众多企业采用。
二、消费者组
(一)定义与原理
消费者组是 Kafka 独有的可扩展且具备容错性的消费者机制。它由多个消费者实例组成,这些实例共同订阅若干主题,实现消息的共同消费。同一消费者组下的每个实例配置相同的组 ID,并被分配到不同的订阅分区。当某个实例故障时,其他实例会自动接管其负责消费的分区,保障消息消费的连续性。
(二)面试策略
消费者组相关问题是面试中的高频考点,合理运用该知识点可引导面试方向。若擅长位移值原理,可阐述消费者组的位移提交机制;若对 Kafka Broker 熟悉,可探讨消费者组与 Broker 之间的交互;即便擅长 Producer,也可提及 “消费者组消费的数据源于 Producer 端生产的消息”,自然过渡到自身擅长领域。
三、ZooKeeper 在 Kafka 中的作用
当前,Kafka 依赖 ZooKeeper 完成集群元数据存放、成员管理、Controller 选举及其他管理任务。其中,“存放元数据” 是指主题分区的所有数据以 ZooKeeper 保存的数据为权威;“成员管理” 涵盖 Broker 节点的注册、注销及属性变更;“Controller 选举” 负责选举集群 Controller,其他管理任务包括主题删除、参数配置等。不过,随着 KIP-500 提案的推进,Kafka 未来将采用基于 Raft 的共识算法替代 ZooKeeper 实现 Controller 自选举,从而摆脱对 ZooKeeper 的依赖。在面试中提及 “目前” 这一现状,能体现对社区演进计划的了解,但抛出 KIP-500 也可能引发面试官进一步追问,需提前做好准备。
四、Kafka 中位移(offset)的作用
在 Kafka 中,每个主题分区下的每条消息都被赋予唯一的 ID 数值 —— 位移(偏移量),用于标识其在分区中的位置。消息写入分区日志后,位移值便不可修改。回答此问题后,可根据自身优势转移面试方向:若熟悉 Broker 底层日志写入逻辑,可强调消息在日志中的存放格式;若了解位移值的不可修改特性,可提及 “Log Cleaner 组件无法影响位移值”;若对消费者概念清晰,则可深入阐述位移值和消费者位移值之间的区别。
五、领导者副本(Leader Replica)和追随者副本(Follower Replica)
(一)基础区别
Kafka 副本分为领导者副本和追随者副本。只有 Leader 副本能对外提供读写服务,响应 Clients 端请求;Follower