本文爲您盤點了14個最多見的Kafka面試題,同時也是對Apache Kafka初學者必備知識點的一個整理與介紹。面試
一、請說明什麼是Apache Kafka?服務器
Apache Kafka是由Apache開發的一種發佈訂閱消息系統,它是一個分佈式的、分區的和重複的日誌服務。網絡
二、請說明什麼是傳統的消息傳遞方法?分佈式
傳統的消息傳遞方法包括兩種:性能
-
排隊:在隊列中,一組用戶能夠從服務器中讀取消息,每條消息都發送給其中一我的。spa
-
發佈-訂閱:在這個模型中,消息被廣播給全部的用戶。設計
三、請說明Kafka相對傳統技術有什麼優點?代理
Apache Kafka與傳統的消息傳遞技術相比優點之處在於:日誌
快速:單一的Kafka代理能夠處理成千上萬的客戶端,每秒處理數兆字節的讀寫操做。對象
可伸縮:在一組機器上對數據進行分區和簡化,以支持更大的數據
持久:消息是持久性的,並在集羣中進行復制,以防止數據丟失。
設計:它提供了容錯保證和持久性
四、在Kafka中broker的意義是什麼?
在Kafka集羣中,broker術語用於引用服務器。
五、Kafka服務器能接收到的最大信息是多少?
Kafka服務器能夠接收到的消息的最大大小是1000000字節。
六、解釋Kafka的Zookeeper是什麼?咱們能夠在沒有Zookeeper的狀況下使用Kafka嗎?
Zookeeper是一個開放源碼的、高性能的協調服務,它用於Kafka的分佈式應用。
不,不可能越過Zookeeper,直接聯繫Kafka broker。一旦Zookeeper中止工做,它就不能服務客戶端請求。
-
Zookeeper主要用於在集羣中不一樣節點之間進行通訊
-
在Kafka中,它被用於提交偏移量,所以若是節點在任何狀況下都失敗了,它均可以從以前提交的偏移量中獲取
-
除此以外,它還執行其餘活動,如: leader檢測、分佈式同步、配置管理、識別新節點什麼時候離開或鏈接、集羣、節點實時狀態等等。
七、解釋Kafka的用戶如何消費信息?
在Kafka中傳遞消息是經過使用sendfile API完成的。它支持將字節從套接口轉移到磁盤,經過內核空間保存副本,並在內核用戶之間調用內核。
八、解釋如何提升遠程用戶的吞吐量?
若是用戶位於與broker不一樣的數據中心,則可能須要調優套接口緩衝區大小,以對長網絡延遲進行攤銷。
九、解釋一下,在數據製做過程當中,你如何能從Kafka獲得準確的信息?
在數據中,爲了精確地得到Kafka的消息,你必須遵循兩件事: 在數據消耗期間避免重複,在數據生產過程當中避免重複。
這裏有兩種方法,能夠在數據生成時準確地得到一個語義:
-
每一個分區使用一個單獨的寫入器,每當你發現一個網絡錯誤,檢查該分區中的最後一條消息,以查看您的最後一次寫入是否成功
-
在消息中包含一個主鍵(UUID或其餘),並在用戶中進行反複製
十、解釋如何減小ISR中的擾動?broker何時離開ISR?
ISR是一組與leaders徹底同步的消息副本,也就是說ISR中包含了全部提交的消息。ISR應該老是包含全部的副本,直到出現真正的故障。若是一個副本從leader中脫離出來,將會從ISR中刪除。
十一、Kafka爲何須要複製?
Kafka的信息複製確保了任何已發佈的消息不會丟失,而且能夠在機器錯誤、程序錯誤或更常見些的軟件升級中使用。
十二、若是副本在ISR中停留了很長時間代表什麼?
若是一個副本在ISR中保留了很長一段時間,那麼它就代表,跟蹤器沒法像在leader收集數據那樣快速地獲取數據。
1三、請說明若是首選的副本不在ISR中會發生什麼?
若是首選的副本不在ISR中,控制器將沒法將leadership轉移到首選的副本。
1四、有可能在生產後發生消息偏移嗎?
在大多數隊列系統中,做爲生產者的類沒法作到這一點,它的做用是觸發並忘記消息。broker將完成剩下的工做,好比使用id進行適當的元數據處理、偏移量等。
做爲消息的用戶,你能夠從Kafka broker中得到補償。若是你注視SimpleConsumer類,你會注意到它會獲取包括偏移量做爲列表的MultiFetchResponse對象。此外,當你對Kafka消息進行迭代時,你會擁有包括偏移量和消息發送的MessageAndOffset對象。
轉自
14個最多見的Kafka面試題及答案http://www.toutiao.com/i6456660580726997517/