1. 程式人生 > >關於 Kafka 的一些面試題目

關於 Kafka 的一些面試題目

上週客串了一下面試官,在這裡就簡單記錄一下期間我問到的一些關於 Kafka 的面試題目,這些都是我平時在學習 Kafka 的一些總結要點。

  • 談談你對 kafka 的整體認識?

問這個問題主要是想知道面試者對 Kafka 的整體認識如何,能夠大致瞭解清楚面試者對 Kafka 的相關概念的熟悉程度,比如訊息、topic、partition、replica、offset、重平衡、leader/follower、ISR 等等。

  • 談談 Kafka 吞吐量為何如此高?

多分割槽、batch send、kafka Reator 網路模型、pagecache、sendfile 零拷貝、資料壓縮。

  • 談談你對生產者儲水池機制的理解

sender 執行緒工作機制、ByteBuffer 緩衝區的作用等等:

  • 如何提高kafka吞吐量?

生產端調整 batch.size、linger.ms 引數,以及主題分割槽數合理分配等。

  • 生產者producer是執行緒安全的嗎?多執行緒例項還是單執行緒例項優缺點?

  • 消費者 consumer 是執行緒安全的嗎?多執行緒例項、單執行緒例項、單 consumer + 多 worker 執行緒的優缺點?

  • 訊息拉取時,什麼情況下會造成訊息重複消費?談談你對位移提交的理解?

理解訊息交付語義:

最多一次(atmostonce):訊息可能丟失也可能被處理,但最多隻會被處理一次;

至少一次(atleastonce):訊息不會丟失,但可能被處理多次;

精確一次(exactlyonce):訊息被處理且只會被處理一次。

假若消費者在消費前提交位移,那麼就是“最多一次”,若在消費後提交位移,那麼就是“最少一次”,如果能夠保證消費和提交位移同在一個事務中執行,就可保證“精確一次”。__consumer_offsets的一些理解。

  • 什麼時候會產生消費組重平衡以及重平衡會涉及到哪些相關引數、頻繁重平衡會造成哪些後果?

消費組成員變更、主題數量變更、訂閱資訊變更;session.timeout.ms、max.poll.interval.ms、hearbeat.interval.ms;

相關文章:Kafka重平衡機制

  • kafka預設不支援自動分割槽重分配,那麼如果讓你來執行分割槽重分配,有哪幾個步驟,以及在重分配過程中kafka會有哪些動作?

RAR、OAR、AR、RAR-OAR、OAR-RAR 相關概念,

相關文章:記一次 Kafka 線上擴容、Kafka 分割槽重分配原始碼分析

  • 談談你對 Preferred leader 選舉的理解?

在 broker 掛掉之後,分割槽 leader 會變更,久而久之就會變得不均衡,Kafka 預設序號最小的副本為 Preferred leader,在 broker 重啟回來後,Kafka 會重新調整分割槽的 Preferred leader 成為 leader,Preferred leader 選舉分為手動選舉和自動選舉,涉及引數 auto.leader.rebalance.enable,還有個預設允許 10% 不均衡策略等等。

  • 談談你對 ISR 副本同步的理解?ISR副本同步的缺陷有哪些?

相關文章:Kafka ISR 副本同步機制

  • 談談你對水印備份機制的理解?LEO 更新機制、HW 更新機制?

相關文章:圖解:Kafka 水印備份機制

  • 水印備份機制的一些缺陷?資料丟失、資料離散?如何解決的(leader epoch)

相關文章:圖解:Kafka 水印備份機制

  • 談談你對 controller 機制的理解?controller 主要有哪些功能?

更新叢集元資料資訊、建立主題、刪除主題、分割槽重分配、preferred leader 副本選舉、主題分割槽擴充套件、broker 加入叢集、broker 崩潰、受控關閉、controller leader 選舉。

  • Kafka 的日誌儲存機制?

每個分割槽擁有單獨的日誌(partition log)、順序寫、到一定大小分成日誌段檔案(log segment file)、每個 log 檔案對應一個索引檔案(.index .timeindex)等等。

  • Kafka 分割槽數越多效能就越好嗎?為什麼?

我的理解:

  1. 每個分割槽數都對應一個 log 檔案,log 檔案是順序寫的,但如果有非常多分割槽同時刷盤,就會變相成亂序寫了,我猜想這也是為什麼 RocketMQ 一個 broker 只會擁有一個 CommitLog 的原因之一吧;
  2. 客戶端會為每個分割槽呼叫一條執行緒處理,多執行緒併發地處理分割槽訊息,分割槽越多,意味著處理的執行緒數也就越多,到一定程度後,會造成執行緒切換開銷大;
  3. 其中一個 broker 掛掉後,如果此時分割槽特別多,Kafka 分割槽 leader 重新選舉的時間大大增加;
  4. 每個分割槽對應都有檔案控制代碼,分割槽越多,系統檔案控制代碼就越多;
  5. 客戶端在會為每個分割槽分配一定的緩衝區,如果分割槽過多,分配的記憶體也越大。

    更多精彩文章請關注作者維護的公眾號「後端進階」,這是一個專注後端相關技術的公眾號。
    關注公眾號並回復「後端」免費領取後端相關電子書籍。
    歡迎分享,轉載請保留出處。

相關推薦

關於 Kafka一些面試題目

上週客串了一下面試官,在這裡就簡單記錄一下期間我問到的一些關於 Kafka 的面試題目,這些都是我平時在學習 Kafka 的一些總結要點。 談談你對 kafka 的整體認識? 問這個問題主要是想知道面試者對 Kafka 的整體認識如何,能夠大致瞭解清楚面試者對 Kafka 的相關概念的熟悉程度,比如訊息、

測試工程師的一些面試題目(python)和總結

pat 實現 cci strong 表現 用法 工程 重點 性能 (一)說明 1、記錄自己面試測試工程師時遇到的一些編程題(python)。 2、回顧下面試的過程,做個總結。 (二)題目 1、輸入:JSON {"a":"aa","b":"bb",

PYTHON 一些基礎面試題目總結

外部 刪除一個文件 tel 信息 mpi seq break list 請求 PYTHON 一些基礎面試題目總結http://www.bieryun.com/1191.html1. Python是如何進行內存管理的?答:從三個方面來說,一對象的引用計數機制,二垃

一些公司的面試題目 U3D

height iostream image idt 試題 esp sin amp else #include <iostream> using namespace std; int main() { int N; while (cin>>

java校招一些面試題目

陣列和連結串列的區別 陣列靜態分配記憶體,連結串列動態分配記憶體; 陣列在記憶體中連續,連結串列不一定連續; 陣列元素在棧區,連結串列元素在堆區; 陣列利用下標定位,時間複雜度為O(1),連結串列定位元素時間複雜度O(n) 陣列插入或刪除元素的時間複雜度O

一些後臺面試題目

C++ 1.介紹vector和list原理和時間複雜度 2.const和static的作用 3.虛擬函式和從純虛擬函式 4.只能建立在堆上的物件和棧上的物件,注意繼承 5.volatile作用 6.實現多型原理 7.const和define區別 8.map和h

整理一些面試可能會遇到的演算法題目

將兩個有序的單鏈表合併為一個有序的單鏈表,預設是按升序排列的。【兩路歸併排序(升序排列)  (平均/最差)時間複雜度O(NlogN)】typedef struct _Node_t { struct _Node_t *next; int data; }Node;

七、PYTHON 一些基礎面試題目總結

1.       Python是如何進行記憶體管理的? 答:從三個方面來說,一物件的引用計數機制,二垃圾回收機制,三記憶體池機制 一、物件的引用計數機制 python內部使用引用計數,來保持追蹤記憶體中的物件,所有物件都有引用計數。 引用計數增加的情況: 1,一

2017最新PHP經典面試題目匯總(上篇)

4.0 .net true 服務 一次 模板 混合 符號 組織 原文鏈接:http://www.cnblogs.com/zhyunfe/p/6209097.html 1、雙引號和單引號的區別 雙引號解釋變量,單引號不解釋變量 雙引號裏插入單引號,其中單引號裏如果有變量

Java面試題目整理

size 虛擬 ble 可復用 ringbuf 進步 組合 java 自己的 一、引言:本文主要整理遇到的面試題目,以及提供自己的見解,將會持續更新,如有問題,可評論交流,一起進步。 二、問題及我的見解: 1. n個結點可以組合成多少棵不同的二叉樹? 答:2^n-n棵 2.

HTTP面試題目

ges http請求 請求區別 logs 關閉連接 val 數據傳輸 管理 支持 轉自:http://m.blog.csdn.net/zhangliangzi/article/details/51336564 1、說一下什麽是Http協議? 對器客戶端和 服務器端之間數據傳

收藏版:java常見面試題目精講視頻教程!

收藏版:java常見面試題目精講視頻教程! 首先給大家愛介紹一下java的就業前景,Java語言是一門很實用的語言,在互聯網的應用十分廣泛,目前采用JAVA語言開發的網站也越來越多,所以對Java開發人才的需求量也是倍增。從人才需求方面看,軟件開發是當下的發展趨勢,而我國的軟件開發人才極為缺

css的一些有趣題目

epp lba school -h 1.5 繪制 趣題 lin style 題目1、下面這個圖形,只使用一個標簽,可以有多少種實現方式: 假設我們的單標簽是一個 div: <div></div> 定義如下通用CSS: div{ p

《算法概論》第八章的一些課後題目 關於NP-Complete Problem

題目 variables use 指數 -c 如果能 get set complete 8.3 STINGY SAT STINGY SAT is the following problem: given a set of clauses (each a disjuncti

Linux驅動經典面試題目

驅動 pan 面試 ng- for 分類 pop 面試題目 方法 1、 linux驅動分類 2、 信號量與自旋鎖 3、 platform總線設備及總線設備怎樣編寫 4、 kmalloc和vmalloc的差別 5、 module_init的級別 6

js閉包面試題目

面試題 log cnblogs lan logs htm title javascrip light <!DOCTYPE html> <html lang="en"> <head> <meta charset="U

一些面試的java題

相等 速度 iterator 抽象類 抽象 equals() hashmap als 方法重載 1.什麽是Java虛擬機?為什麽Java被稱作是“平臺無關的編程語言”? 答,虛擬機是可以執行java字節碼的虛擬機進程,把源文件編譯成可執行的字節碼文件。java虛擬機知道硬件

SQL語句面試題目:一般查詢和高級子查詢

姓名 content tar 公司 平均工資 比較 以及 his http 幾個表 employees 表: EMPLOYEE_ID NUMBER(6) FIRST_NAME VARCHAR2(2

C# .Net經典面試題目及答案

數字 空類 相同 面向連接 tab session cnblogs 一個 all 1, 請你說說.NET中類和結構的區別? 答:   結構和類具有大體的語法,但是結構受到的限制比類要多。結構不能申明有默認的構造函數,為結構的副本是又編譯器創建和銷毀的,所以不需要默認的構造函

2018年4月份,阿裏最新的java程序員面試題目

java 程序員 架構師 面試 阿裏巴巴 目錄 技術一面(23問) 技術二面(3大塊) 性能優化(21點) 項目實戰(34塊) JAVA方向技術考察點(15點) JAVA開發技術面試中可能問到的問題(17問) 阿裏技術面試1 1.Java IO流的層次結構? 2.請說出常用的異常類型? 3