kafka面試題及答案

  1. Kafka的用途有哪些枷踏?使用場景如何凿可?
    總結(jié)下來就幾個(gè)字:異步處理、日常系統(tǒng)解耦涉馅、削峰归园、提速、廣播

如果再說具體一點(diǎn)例如:消息,網(wǎng)站活動(dòng)追蹤,監(jiān)測指標(biāo),日志聚合,流處理,事件采集,提交日志等

  1. Kafka中的ISR稚矿、AR又代表什么庸诱?ISR的伸縮又指什么
    ISR:In-Sync Replicas 副本同步隊(duì)列

AR:Assigned Replicas 所有副本

ISR是由leader維護(hù),follower從leader同步數(shù)據(jù)有一些延遲(包括延遲時(shí)間replica.lag.time.max.ms和延遲條數(shù)replica.lag.max.messages兩個(gè)維度, 當(dāng)前最新的版本0.10.x中只支持replica.lag.time.max.ms這個(gè)維度)晤揣,任意一個(gè)超過閾值都會(huì)把follower剔除出ISR, 存入OSR(Outof-Sync Replicas)列表桥爽,新加入的follower也會(huì)先存放在OSR中。AR=ISR+OSR昧识。

  1. Kafka中的HW聚谁、LEO、LSO滞诺、LW等分別代表什么形导?
    HW:High Watermark 高水位,取一個(gè)partition對(duì)應(yīng)的ISR中最小的LEO作為HW习霹,consumer最多只能消費(fèi)到HW所在的位置上一條信息朵耕。

LEO:LogEndOffset 當(dāng)前日志文件中下一條待寫信息的offset

HW/LEO這兩個(gè)都是指最后一條的下一條的位置而不是指最后一條的位置。

LSO:Last Stable Offset 對(duì)未完成的事務(wù)而言淋叶,LSO 的值等于事務(wù)中第一條消息的位置(firstUnstableOffset)阎曹,對(duì)已完成的事務(wù)而言煞檩,它的值同 HW 相同

LW:Low Watermark 低水位, 代表 AR 集合中最小的 logStartOffset 值

  1. Kafka中是怎么體現(xiàn)消息順序性的处嫌?
    kafka每個(gè)partition中的消息在寫入時(shí)都是有序的,消費(fèi)時(shí)斟湃,每個(gè)partition只能被每一個(gè)group中的一個(gè)消費(fèi)者消費(fèi)注暗,保證了消費(fèi)時(shí)也是有序的。
    整個(gè)topic不保證有序毙沾。如果為了保證topic整個(gè)有序乳愉,那么將partition調(diào)整為1.

  2. Kafka中的分區(qū)器、序列化器备闲、攔截器是否了解泻骤?它們之間的處理順序是什么?
    攔截器->序列化器->分區(qū)器

  3. Kafka生產(chǎn)者客戶端中使用了幾個(gè)線程來處理希柿?分別是什么挤悉?
    2個(gè),主線程和Sender線程。主線程負(fù)責(zé)創(chuàng)建消息装悲,然后通過分區(qū)器昏鹃、序列化器、攔截器作用之后緩存到累加器RecordAccumulator中诀诊。Sender線程負(fù)責(zé)將RecordAccumulator中消息發(fā)送到kafka中.

  4. “消費(fèi)組中的消費(fèi)者個(gè)數(shù)如果超過topic的分區(qū)洞渤,那么就會(huì)有消費(fèi)者消費(fèi)不到數(shù)據(jù)”這句話是否正確?如果不正確属瓣,那么有沒有什么hack的手段载迄?
    不正確,通過自定義分區(qū)分配策略抡蛙,可以將一個(gè)consumer指定消費(fèi)所有partition护昧。

  5. 消費(fèi)者提交消費(fèi)位移時(shí)提交的是當(dāng)前消費(fèi)到的最新消息的offset還是offset+1?
    offset+1

  6. 有哪些情形會(huì)造成重復(fù)消費(fèi)?
    消費(fèi)者消費(fèi)后沒有commit offset(程序崩潰/強(qiáng)行kill/消費(fèi)耗時(shí)/自動(dòng)提交偏移情況下unscrible)

  7. 那些情景下會(huì)造成消息漏消費(fèi)粗截?
    消費(fèi)者沒有處理完消息 提交offset(自動(dòng)提交偏移 未處理情況下程序異常結(jié)束)

  8. KafkaConsumer是非線程安全的惋耙,那么怎么樣實(shí)現(xiàn)多線程消費(fèi)?
    1.在每個(gè)線程中新建一個(gè)KafkaConsumer

2.單線程創(chuàng)建KafkaConsumer熊昌,多個(gè)處理線程處理消息(難點(diǎn)在于是否要考慮消息順序性绽榛,offset的提交方式)

  1. 簡述消費(fèi)者與消費(fèi)組之間的關(guān)系
    消費(fèi)者從屬與消費(fèi)組,消費(fèi)偏移以消費(fèi)組為單位婿屹。每個(gè)消費(fèi)組可以獨(dú)立消費(fèi)主題的所有數(shù)據(jù)蒜田,同一消費(fèi)組內(nèi)消費(fèi)者共同消費(fèi)主題數(shù)據(jù),每個(gè)分區(qū)只能被同一消費(fèi)組內(nèi)一個(gè)消費(fèi)者消費(fèi)选泻。

  2. 當(dāng)你使用kafka-topics.sh創(chuàng)建(刪除)了一個(gè)topic之后冲粤,Kafka背后會(huì)執(zhí)行什么邏輯?
    創(chuàng)建:在zk上/brokers/topics/下節(jié)點(diǎn) kafkabroker會(huì)監(jiān)聽節(jié)點(diǎn)變化創(chuàng)建主題
    刪除:調(diào)用腳本刪除topic會(huì)在zk上將topic設(shè)置待刪除標(biāo)志页眯,kafka后臺(tái)有定時(shí)的線程會(huì)掃描所有需要?jiǎng)h除的topic進(jìn)行刪除

  3. topic的分區(qū)數(shù)可不可以增加梯捕?如果可以怎么增加?如果不可以窝撵,那又是為什么傀顾?
    可以

  4. topic的分區(qū)數(shù)可不可以減少?如果可以怎么減少碌奉?如果不可以短曾,那又是為什么?
    不可以

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

  6. Kafka目前有那些內(nèi)部topic嫉拐,它們都有什么特征?各自的作用又是什么魁兼?
    __consumer_offsets 以下劃線開頭婉徘,保存消費(fèi)組的偏移

  7. 優(yōu)先副本是什么?它有什么特殊的作用?
    優(yōu)先副本 會(huì)是默認(rèn)的leader副本 發(fā)生leader變化時(shí)重選舉會(huì)優(yōu)先選擇優(yōu)先副本作為leader

  8. Kafka有哪幾處地方有分區(qū)分配的概念盖呼?簡述大致的過程及原理
    創(chuàng)建主題時(shí)
    如果不手動(dòng)指定分配方式 有兩種分配方式

消費(fèi)組內(nèi)分配

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

  2. 如果我指定了一個(gè)offset,Kafka怎么查找到對(duì)應(yīng)的消息几晤?
    1.通過文件名前綴數(shù)字x找到該絕對(duì)offset 對(duì)應(yīng)消息所在文件

2.offset-x為在文件中的相對(duì)偏移

3.通過index文件中記錄的索引找到最近的消息的位置

4.從最近位置開始逐條尋找

  1. 如果我指定了一個(gè)timestamp约炎,Kafka怎么查找到對(duì)應(yīng)的消息?
    原理同上 但是時(shí)間的因?yàn)橄Ⅲw中不帶有時(shí)間戳 所以不精確

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蟹瘾,一起剝皮案震驚了整個(gè)濱河市章钾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌热芹,老刑警劉巖贱傀,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異伊脓,居然都是意外死亡府寒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門报腔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來株搔,“玉大人,你說我怎么就攤上這事纯蛾∠朔浚” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵翻诉,是天一觀的道長炮姨。 經(jīng)常有香客問我,道長碰煌,這世上最難降的妖魔是什么舒岸? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮芦圾,結(jié)果婚禮上蛾派,老公的妹妹穿的比我還像新娘。我一直安慰自己个少,他們只是感情好洪乍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夜焦,像睡著了一般壳澳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糊探,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天钾埂,我揣著相機(jī)與錄音河闰,去河邊找鬼科平。 笑死褥紫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瞪慧。 我是一名探鬼主播髓考,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼弃酌!你這毒婦竟也來了氨菇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤妓湘,失蹤者是張志新(化名)和其女友劉穎查蓉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榜贴,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豌研,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唬党。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹃共。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖驶拱,靈堂內(nèi)的尸體忽然破棺而出霜浴,到底是詐尸還是另有隱情,我是刑警寧澤蓝纲,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布阴孟,位于F島的核電站,受9級(jí)特大地震影響税迷,放射性物質(zhì)發(fā)生泄漏温眉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一翁狐、第九天 我趴在偏房一處隱蔽的房頂上張望类溢。 院中可真熱鬧,春花似錦露懒、人聲如沸闯冷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛇耀。三九已至,卻和暖如春坎弯,著一層夾襖步出監(jiān)牢的瞬間纺涤,已是汗流浹背译暂。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撩炊,地道東北人外永。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像拧咳,于是被迫代替她去往敵國和親伯顶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容