Kafka面試題

  • Kafka的用途有哪些符匾?使用場景如何蕴潦?
    Kafka具有吞吐量大 簡單的優(yōu)點净薛,適用于日志收集 大數(shù)據(jù)實時計算等場景

  • Kafka中的ISR汪榔、AR又代表什么?ISR的伸縮又指什么
    AR:Assigned Replicas 所有副本列表
    ISR:InSync Replicas 同步副本列表
    ISR expand : 有副本恢復(fù)同步狀態(tài)
    ISR shrink : 有副本脫離同步狀態(tài)

  • Kafka中的HW、LEO痴腌、LSO雌团、LW等分別代表什么?
    HW: High Watermark/高水位士聪。 是已備份消息位置锦援,HW之前的消息均可被consumer消費 leader.HW=min(ISR.LEO) follower.HW=min(follower.LEO,leader.HW)
    LEO: Log End Offset/日志末端偏移。是下一條消息寫入位置(LEO=10 有9條消息)
    LSO:last stable offset/穩(wěn)定偏移 剥悟。 LSO之前的消息狀態(tài)都已確認(commit/aborted)主要用于事務(wù)
    LW:

  • Kafka中是怎么體現(xiàn)消息順序性的灵寺?
    kafka每個partition中的消息在寫入時都是有序的,消費時区岗,每個partition只能被每一個group中的一個消費者消費略板,保證了消費時也是有序的。
    整個topic不保證有序

  • Kafka中的分區(qū)器慈缔、序列化器叮称、攔截器是否了解?它們之間的處理順序是什么藐鹤?
    分區(qū)器:根據(jù)鍵值確定消息應(yīng)該處于哪個分區(qū)中瓤檐,默認情況下使用輪詢分區(qū),可以自行實現(xiàn)分區(qū)器接口自定義分區(qū)邏輯
    序列化器:鍵序列化器和值序列化器娱节,將鍵和值都轉(zhuǎn)為二進制流 還有反序列化器 將二進制流轉(zhuǎn)為指定類型數(shù)據(jù)
    攔截器:兩個方法 doSend()方法會在序列化之前完成 onAcknowledgement()方法在消息確認或失敗時調(diào)用 可以添加多個攔截器按順序執(zhí)行
    調(diào)用順序: 攔截器doSend() -> 序列化器 -> 分區(qū)器

  • Kafka生產(chǎn)者客戶端的整體結(jié)構(gòu)是什么樣子的距帅?

  • “消費組中的消費者個數(shù)如果超過topic的分區(qū),那么就會有消費者消費不到數(shù)據(jù)”這句話是否正確括堤?如果不正確碌秸,那么有沒有什么hack的手段?
    正確

  • 消費者提交消費位移時提交的是當前消費到的最新消息的offset還是offset+1?
    offset+1

  • 有哪些情形會造成重復(fù)消費悄窃?
    消費者消費后沒有commit offset(程序崩潰/強行kill/消費耗時/自動提交偏移情況下unscrible)

  • 那些情景下會造成消息漏消費讥电?
    消費者沒有處理完消息 提交offset(自動提交偏移 未處理情況下程序異常結(jié)束)

  • KafkaConsumer是非線程安全的,那么怎么樣實現(xiàn)多線程消費轧抗?
    每個線程一個消費者

  • 簡述消費者與消費組之間的關(guān)系
    消費者從屬與消費組恩敌,消費偏移以消費組為單位。每個消費組可以獨立消費主題的所有數(shù)據(jù)横媚,同一消費組內(nèi)消費者共同消費主題數(shù)據(jù)纠炮,每個分區(qū)只能被同一消費組內(nèi)一個消費者消費。

  • 當你使用kafka-topics.sh創(chuàng)建(刪除)了一個topic之后灯蝴,Kafka背后會執(zhí)行什么邏輯恢口?
    創(chuàng)建:在zk上/brokers/topics/下節(jié)點 kafkabroker會監(jiān)聽節(jié)點變化創(chuàng)建主題
    刪除:調(diào)用腳本刪除topic會在zk上將topic設(shè)置待刪除標志,kafka后臺有定時的線程會掃描所有需要刪除的topic進行刪除

  • topic的分區(qū)數(shù)可不可以增加穷躁?如果可以怎么增加耕肩?如果不可以,那又是為什么?
    可以增加

  • topic的分區(qū)數(shù)可不可以減少猿诸?如果可以怎么減少婚被?如果不可以,那又是為什么梳虽?
    不能減少 會丟失數(shù)據(jù)

  • 創(chuàng)建topic時如何選擇合適的分區(qū)數(shù)址芯?
    根據(jù)集群的機器數(shù)量和需要的吞吐量來決定適合的分區(qū)數(shù)

  • Kafka目前有那些內(nèi)部topic,它們都有什么特征窜觉?各自的作用又是什么谷炸?
    __consumer_offsets 以雙下劃線開頭,保存消費組的偏移

  • 優(yōu)先副本是什么竖螃?它有什么特殊的作用淑廊?
    優(yōu)先副本 會是默認的leader副本 發(fā)生leader變化時重選舉會優(yōu)先選擇優(yōu)先副本作為leader

  • Kafka有哪幾處地方有分區(qū)分配的概念逗余?簡述大致的過程及原理

  1. 創(chuàng)建主題時
    如果不手動指定分配方式 有兩種分配方式

  2. 消費組內(nèi)分配

  • 簡述Kafka的日志目錄結(jié)構(gòu)
    每個partition一個文件夾特咆,包含四類文件.index .log .timeindex leader-epoch-checkpoint
    .index .log .timeindex 三個文件成對出現(xiàn) 前綴為上一個segment的最后一個消息的偏移 log文件中保存了所有的消息 index文件中保存了稀疏的相對偏移的索引 timeindex保存的則是時間索引
    leader-epoch-checkpoint中保存了每一任leader開始寫入消息時的offset 會定時更新
    follower被選為leader時會根據(jù)這個確定哪些消息可用

  • Kafka中有那些索引文件?
    如上

  • 如果我指定了一個offset录粱,Kafka怎么查找到對應(yīng)的消息腻格?

  1. 通過文件名前綴數(shù)字x找到該絕對offset 對應(yīng)消息所在文件
  2. offset-x為在文件中的相對偏移
    3.通過index文件中記錄的索引找到最近的消息的位置
    4.從最近位置開始逐條尋找
  • 如果我指定了一個timestamp,Kafka怎么查找到對應(yīng)的消息啥繁?
    原理同上 但是時間的因為消息體中不帶有時間戳 所以不精確

  • 聊一聊你對Kafka的Log Retention的理解
    kafka留存策略包括 刪除和壓縮兩種
    刪除: 根據(jù)時間和大小兩個方式進行刪除 大小是整個partition日志文件的大小
    超過的會從老到新依次刪除 時間指日志文件中的最大時間戳而非文件的最后修改時間
    壓縮: 相同key的value只保存一個 壓縮過的是clean 未壓縮的dirty 壓縮之后的偏移量不連續(xù) 未壓縮時連續(xù)

  • 聊一聊你對Kafka的Log Compaction的理解
    如上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末菜职,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子旗闽,更是在濱河造成了極大的恐慌酬核,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件适室,死亡現(xiàn)場離奇詭異嫡意,居然都是意外死亡,警方通過查閱死者的電腦和手機捣辆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門蔬螟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人汽畴,你說我怎么就攤上這事旧巾。” “怎么了忍些?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵鲁猩,是天一觀的道長。 經(jīng)常有香客問我罢坝,道長绳匀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮疾棵,結(jié)果婚禮上戈钢,老公的妹妹穿的比我還像新娘。我一直安慰自己是尔,他們只是感情好殉了,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拟枚,像睡著了一般薪铜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恩溅,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天隔箍,我揣著相機與錄音,去河邊找鬼脚乡。 笑死蜒滩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的奶稠。 我是一名探鬼主播俯艰,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锌订!你這毒婦竟也來了竹握?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤辆飘,失蹤者是張志新(化名)和其女友劉穎啦辐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜈项,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡芹关,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了战得。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片充边。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖常侦,靈堂內(nèi)的尸體忽然破棺而出浇冰,到底是詐尸還是另有隱情,我是刑警寧澤聋亡,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布肘习,位于F島的核電站,受9級特大地震影響坡倔,放射性物質(zhì)發(fā)生泄漏漂佩。R本人自食惡果不足惜脖含,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望投蝉。 院中可真熱鬧养葵,春花似錦、人聲如沸瘩缆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庸娱。三九已至着绊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間熟尉,已是汗流浹背归露。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留斤儿,地道東北人剧包。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像雇毫,于是被迫代替她去往敵國和親玄捕。 傳聞我的和親對象是個殘疾皇子踩蔚,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353