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