日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kafka面试题与答案全套整理

發(fā)布時(shí)間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kafka面试题与答案全套整理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自?Kafka面試題與答案全套整理

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

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

2. 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。

3. 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 值

4. 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.

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

6. Kafka生產(chǎn)者客戶端的整體結(jié)構(gòu)是什么樣子的?
7. Kafka生產(chǎn)者客戶端中使用了幾個(gè)線程來處理?分別是什么?
2個(gè),主線程和Sender線程。主線程負(fù)責(zé)創(chuàng)建消息,然后通過分區(qū)器、序列化器、攔截器作用之后緩存到累加器RecordAccumulator中。Sender線程負(fù)責(zé)將RecordAccumulator中消息發(fā)送到kafka中.

9. Kafka的舊版Scala的消費(fèi)者客戶端的設(shè)計(jì)有什么缺陷?
10. “消費(fèi)組中的消費(fèi)者個(gè)數(shù)如果超過topic的分區(qū),那么就會(huì)有消費(fèi)者消費(fèi)不到數(shù)據(jù)”這句話是否正確?如果不正確,那么有沒有什么hack的手段?
不正確,通過自定義分區(qū)分配策略,可以將一個(gè)consumer指定消費(fèi)所有partition。

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

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

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

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

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

15. 簡(jiǎn)述消費(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)。

16. 當(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)行刪除

17. topic的分區(qū)數(shù)可不可以增加?如果可以怎么增加?如果不可以,那又是為什么?
可以

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

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

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

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

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

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

23. 簡(jiǎn)述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è)確定哪些消息可用

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

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

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

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

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

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

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

28. 聊一聊你對(duì)Kafka的Log Compaction的理解
29. 聊一聊你對(duì)Kafka底層存儲(chǔ)的理解(頁緩存、內(nèi)核層、塊層、設(shè)備層)
30. 聊一聊Kafka的延時(shí)操作的原理
31. 聊一聊Kafka控制器的作用
32. 消費(fèi)再均衡的原理是什么?(提示:消費(fèi)者協(xié)調(diào)器和消費(fèi)組協(xié)調(diào)器)
33. Kafka中的冪等是怎么實(shí)現(xiàn)的
pid+序號(hào)實(shí)現(xiàn),單個(gè)producer內(nèi)冪等

33. Kafka中的事務(wù)是怎么實(shí)現(xiàn)的(這題我去面試6家被問4次,照著答案念也要念十幾分鐘,面試官簡(jiǎn)直湊不要臉。實(shí)在記不住的話…只要簡(jiǎn)歷上不寫精通Kafka一般不會(huì)問到,我簡(jiǎn)歷上寫的是“熟悉Kafka,了解RabbitMQ….”)
34. Kafka中有那些地方需要選舉?這些地方的選舉策略又有哪些?
35. 失效副本是指什么?有那些應(yīng)對(duì)措施?
36. 多副本下,各個(gè)副本中的HW和LEO的演變過程
37. 為什么Kafka不支持讀寫分離?
38. Kafka在可靠性方面做了哪些改進(jìn)?(HW, LeaderEpoch)
39. Kafka中怎么實(shí)現(xiàn)死信隊(duì)列和重試隊(duì)列?
40. Kafka中的延遲隊(duì)列怎么實(shí)現(xiàn)(這題被問的比事務(wù)那題還要多!!!聽說你會(huì)Kafka,那你說說延遲隊(duì)列怎么實(shí)現(xiàn)?)
41. Kafka中怎么做消息審計(jì)?
42. Kafka中怎么做消息軌跡?
43. Kafka中有那些配置參數(shù)比較有意思?聊一聊你的看法
44. Kafka中有那些命名比較有意思?聊一聊你的看法
45. Kafka有哪些指標(biāo)需要著重關(guān)注?
生產(chǎn)者關(guān)注MessagesInPerSec、BytesOutPerSec、BytesInPerSec 消費(fèi)者關(guān)注消費(fèi)延遲Lag

46. 怎么計(jì)算Lag?(注意read_uncommitted和read_committed狀態(tài)下的不同)
參考 如何監(jiān)控kafka消費(fèi)Lag情況

47. Kafka的那些設(shè)計(jì)讓它有如此高的性能?
零拷貝,頁緩存,順序?qū)?/p>

48. Kafka有什么優(yōu)缺點(diǎn)?
49. 還用過什么同質(zhì)類的其它產(chǎn)品,與Kafka相比有什么優(yōu)缺點(diǎn)?
50. 為什么選擇Kafka?
吞吐量高,大數(shù)據(jù)消息系統(tǒng)唯一選擇。

51. 在使用Kafka的過程中遇到過什么困難?怎么解決的?
52. 怎么樣才能確保Kafka極大程度上的可靠性?
53. 聊一聊你對(duì)Kafka生態(tài)的理解
confluent全家桶(connect/kafka stream/ksql/center/rest proxy等),開源監(jiān)控管理工具kafka-manager,kmanager等

參考

  • Kafka面試題全套整理 | 劃重點(diǎn)要考!
  • Kafka科普系列 | 什么是LSO?
  • Kafka面試題
  • 總結(jié)

    以上是生活随笔為你收集整理的Kafka面试题与答案全套整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。