Kafka面試,你真的過關了嗎?

在熱招的大數據架構師崗位面試中,Kafka 面試題被面試官選中的機率非常大,也是HR 的殺手鐗和狠招,一般來講,面試題有以下幾種:

1. Kafka 爲什麼這麼快?

2. 如何對 Kafka 集羣進行調優?

3. Kafka 的高性能網絡架構是如何設計的?

4. Kafka 集羣資源如何評估?

大多數人遇到這樣的問題,腦海中簡單構思之後就快速給出了答案:

1.  Kafka 是基於磁盤順序寫的設計。

2. 將 Kafka 的副本因子調大,提高數據的安全性,把生產者程序的 ack 調整爲0,提高數據寫入的效率等。

3. Kafka 的高性能網絡架構設計方案包含批處理,高效的序列化方式。

4. Kafka 的集羣資源評估主要看 topic 的數量以及每個 topic 的數據量規模。

這樣看似“突出要點式”的簡短回答,其實正好不知不覺陷入了幾個雷區,我們來分析一下這幾個回答究竟踩中了哪些“”?

1. 回答太過於簡潔,而且不完整,明顯感覺不全面,欠思考。

2. 回答不夠全面,調優一般基於某種業務場景給出最佳方案,畢竟脫離了業務場景而幹談技術和參數調優,那就是耍流氓呀。

3. Kafka 的網絡架構設計,應該從已有方案的痛點,其他類似組件的成功設計方案進行設計參考,這樣會顯得系統全面。

4. 集羣資源評估,除了數據規模一樣,也還要考慮副本,考慮壓縮,考慮生命週期。

那麼,避免踩坑,應該怎麼回答面試官的問題呢?彆着急,我來先給大家做個正確示範。

問題:Kafka 爲什麼那麼快?

示範如下:

1. 首先,Kafka 作爲一個消息系統,通過 topic 的方式來管理 message,把這些消息都順序寫入磁盤文件來提高寫入速度,其實這些消息並沒有實時寫入磁盤,而是充分利用了現代操作系統分頁存儲來利用內存提高IO效率。

2. 其次,它的工作原理是直接利用操作系統的 page 來實現文件到物理內存的直接映射。完成映射之後你對物理內存的操作會被同步到硬盤上(操作系統在適當的時候)。

3. 再次,Kafka 也基於 sendfile 實現 zero copy,簡化網絡上和兩個本地文件之間的數據傳輸,sendfile 的引入不僅減少了數據複製,還減少了上下文切換。

4. 最後,Kafka 爲了能網絡上提高傳輸數據的效率,message 也支持壓縮。在很多情況下,系統的瓶頸不是 CPU 或磁盤,而是網絡 IO,對於需要在廣域網上的數據中心之間發送消息的數據流水線尤其如此。

總結一下:Kafka 速度的祕訣在於,它把所有的消息都變成一個批量的文件,並且進行合理的批量壓縮,減少網絡 IO 損耗,通過 mmap 提高 IO 速度,寫入數據的時候由於單個 partition 是末尾添加所以速度最優;讀取數據的時候配合 sendfile 直接暴力輸出。

你看,這樣的回答,是不是就更全面了?挑不出毛病的滿分答案是完全能讓面試官眼前一亮的,這樣就離接到offer大大向前邁進了一步。

其實,爲了更加全面掌握 Kafka 的底層原理,可以拓展一些相關閱讀。我給大家推薦幾本書:

  • 《 Kafka 技術內幕》鄭奇煌·著

  • 《Apache Kafka 實戰》胡夕·著

  • 《深入理解Kafka: 核心設計與實踐原理》朱忠華·著

但是大多數程序員在延展學習的時候都遇到了大同小異的問題,不信你看,是不是你也中了招?

1. 大家都被工作壓榨的太狠了,996完全沒有閒暇時間學習。

2. 讀了書中的原理,但卻沒有一個很好的實際應用案例進行實戰。

3. 找不到合理的方法,遇到技巧性的編碼就頓時一臉懵逼。

那麼,針對有部分自學困難的同學呢,很適合接下來送出的這套免費且互動感十足的視頻教程——《Kafka源碼深度剖析》。這是我上週剛剛參加過的奈學教育—免費 Kafka進階訓練營,當時報名人數高達12621+人次,現在奈學已經將錄播課程資料全部打包,價值近千元的Kafka源碼剖析課,現免費贈送!這波羊毛,不薅白不薅,相信你跟我一樣,聽完乾貨滿滿的內容絕對會從容應對面試官的靈魂拷問,讓你輕鬆玩轉 Kafka 底層原理!

 需要的同學掃碼添加課程顧問免費領取喔

動手掃一掃,3秒的時間讓你在學習上至少節省1440個小時!

當然,僅僅如此遠沒有誠意,針對愛看書的小夥伴,接下來這波福利一定不容錯過!

6/18 福利大放送

活動介紹:6.18矩惠來襲,【奈學教育】與【噹噹網】強強聯合爲大家獻上【奈學教育專屬優惠碼——FKNADA

活動規則:每購滿100元立減50元,疊加實付150元立減30元,即120元尊享300元購物體驗!

活動日期:2020/6/15-2020/6/20 

快轉發你的小夥伴領取專屬好禮吧!

<點擊原文 更多精彩>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章