鎖屏面試題百日百刷,每個作業日堅持更新面試題,請看到最后就能獲取你想要的,接下來的是今日的面試題:
1.解釋一下,在資料制作程序中,你如何能從Kafka得到準確的資訊?
在資料中,為了精確地獲得Kafka的訊息,你必須遵循兩件事: 在資料消耗期間避免重復,在資料生產程序中避免重復,
這里有兩種方法,可以在資料生成時準確地獲得一個語意:
每個磁區使用一個單獨的寫入器,每當你發現一個網路錯誤,檢查該磁區中的最后一條訊息,以查看您的最后一次寫入是否成功
在訊息中包含一個主鍵(UUID或其他),并在用戶中進行反復制
2.解釋如何減少ISR中的擾動?broker什么時候離開ISR?
ISR是一組與leaders完全同步的訊息副本,也就是說ISR中包含了所有提交的訊息,ISR應該總是包含所有的副本,直到出現真正的故障,如果一個副本從leader中脫離出來,將會從ISR中洗掉,
3.Kafka為什么需要復制?
Kafka的資訊復制確保了任何已發布的訊息不會丟失,并且可以在機器錯誤、程式錯誤或更常見些的軟體升級中使用,
4.如果副本在ISR中停留了很長時間表明什么?
如果一個副本在ISR中保留了很長一段時間,那么它就表明,跟蹤器無法像在leader收集資料那樣快速地獲取資料,
5.請說明如果首選的副本不在ISR中會發生什么?
如果首選的副本不在ISR中,控制器將無法將leadership轉移到首選的副本,
6.Kafka有可能在生產后發生訊息偏移嗎?
在大多數佇列系統中,作為生產者的類無法做到這一點,它的作用是觸發并忘記訊息,broker將完成剩下的作業,比如使用id進行適當的元資料處理、偏移量等,
作為訊息的用戶,你可以從Kafka broker中獲得補償,如果你注視SimpleConsumer類,你會注意到它會獲取包括偏移量作為串列的MultiFetchResponse物件,此外,當你對Kafka訊息進行迭代時,你會擁有包括偏移量和訊息發送的MessageAndOffset物件,
7.請說明Kafka 的訊息投遞保證(delivery guarantee)機制以及如何實作?
Kafka支持三種訊息投遞語意:
① At most once 訊息可能會丟,但絕不會重復傳遞
② At least one 訊息絕不會丟,但可能會重復傳遞
③ Exactly once 每條訊息肯定會被傳輸一次且僅傳輸一次,很多時候這是用戶想要的
consumer在從broker讀取訊息后,可以選擇commit,該操作會在Zookeeper中存下該consumer在該partition下讀取的訊息的offset,該consumer下一次再讀該partition時會從下一條開始讀取,如未commit,下一次讀取的開始位置會跟上一次commit之后的開始位置相同,
可以將consumer設定為autocommit,即consumer一旦讀到資料立即自動commit,如果只討論這一讀取訊息的程序,那Kafka是確保了Exactly once,但實際上實際使用中consumer并非讀取完資料就結束了,而是要進行進一步處理,而資料處理與commit的順序在很大程度上決定了訊息從broker和consumer的delivery guarantee semantic,
·讀完訊息先commit再處理訊息,這種模式下,如果consumer在commit后還沒來得及處理訊息就crash了,下次重新開始作業后就無法讀到剛剛已提交而未處理的訊息,這就對應于At most once,
·讀完訊息先處理再commit消費狀態(保存offset),這種模式下,如果在處理完訊息之后commit之前Consumer crash了,下次重新開始作業時還會處理剛剛未commit的訊息,實際上該訊息已經被處理過了,這就對應于At least once,
·如果一定要做到Exactly once,就需要協調offset和實際操作的輸出,經典的做法是引入兩階段提交,但由于許多輸出系統不支持兩階段提交,更為通用的方式是將offset和操作輸入存在同一個地方,比如,consumer拿到資料后可能把資料放到HDFS,如果把最新的offset和資料本身一起寫到HDFS,那就可以保證資料的輸出和offset的更新要么都完成,要么都不完成,間接實作Exactly once,(目前就high level API而言,offset是存于Zookeeper中的,
無法存于HDFS,而low level API的offset是由自己去維護的,可以將之存于HDFS中),
總之,Kafka默認保證At least once,并且允許通過設定producer異步提交來實作At most once,而Exactly once要求與目標存盤系統協作,Kafka提供的offset可以較為容易地實作這種方式,
全部內容在git上,了解更多請點我頭像或到我的主頁去獲得,謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/549939.html
標籤:其他
上一篇:sql 連續活躍天數
下一篇:qrtz表初始化腳本_mysql
