最常見的Kafka面試題及答案
本文為您盤點最常見的Kafka面試題,同時也是對Apache Kafka初學者必備知識點的一個整理與介紹。
1、請說明什麼是Apache Kafka?
Apache Kafka是由Apache開發的一種釋出訂閱訊息系統,它是一個分散式的、分割槽的和重複的日誌服務。
2、請說明什麼是傳統的訊息傳遞方法?
傳統的訊息傳遞方法包括兩種:
排隊:在佇列中,一組使用者可以從伺服器中讀取訊息,每條訊息都發送給其中一個人。
釋出-訂閱:在這個模型中,訊息被廣播給所有的使用者。
3、請說明Kafka相對傳統技術有什麼優勢?
Apache Kafka與傳統的訊息傳遞技術相比優勢之處在於:
快速:單一的Kafka代理可以處理成千上萬的客戶端,每秒處理數兆位元組的讀寫操作。
可伸縮:在一組機器上對資料進行分割槽和簡化,以支援更大的資料
持久:訊息是永續性的,並在叢集中進行復制,以防止資料丟失。
設計:它提供了容錯保證和永續性
4、在Kafka中broker的意義是什麼?
在Kafka叢集中,broker術語用於引用伺服器。
5、Kafka伺服器能接收到的最大資訊是多少?
Kafka伺服器可以接收到的訊息的最大大小由引數message.max.bytes決定,010版本預設值是1000012,可以配置為broker級別或者topic級別。
6、解釋Kafka的Zookeeper是什麼?我們可以在沒有Zookeeper的情況下使用Kafka嗎?
Zookeeper是一個開放原始碼的、高效能的協調服務,它用於Kafka的分散式應用。
不,不可能越過Zookeeper,直接聯絡Kafka broker。一旦Zookeeper停止工作,它就不能服務客戶端請求。
Zookeeper主要用於在叢集中不同節點之間進行通訊
在Kafka中,它被用於提交偏移量,因此如果節點在任何情況下都失敗了,它都可以從之前提交的偏移量中獲取
除此之外,它還執行其他活動,如: leader檢測、分散式同步、配置管理、識別新節點何時離開或連線、叢集、節點實時狀態等等。
7、解釋Kafka的使用者如何消費資訊?
在Kafka中傳遞訊息是通過使用sendfile API完成的。它支援將位元組從套介面轉移到磁碟,通過核心空間儲存副本,並在核心使用者之間呼叫核心。
消費者消費有各種客戶端:
010: http://kafka.apache.org/0102/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html
082 分高階API和低階API:
https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example
https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+SimpleConsumer+Example
8、解釋如何提高遠端使用者的吞吐量?
如果使用者位於與broker不同的資料中心,則可能需要調優套介面緩衝區大小,以對長網路延遲進行攤銷。
9、解釋一下,在資料製作過程中,你如何能從Kafka得到準確的資訊?
在資料中,為了精確地獲得Kafka的訊息,你必須遵循兩件事: 在資料消耗期間避免重複,在資料生產過程中避免重複。
這裡有兩種方法,可以在資料生成時準確地獲得一個語義:
每個分割槽使用一個單獨的寫入器,每當你發現一個網路錯誤,檢查該分割槽中的最後一條訊息,以檢視您的最後一次寫入是否成功
在訊息中包含一個主鍵(UUID或其他),並在使用者中進行反複製
10、解釋如何減少ISR中的擾動?broker什麼時候離開ISR?
ISR是一組與leaders完全同步的訊息副本,也就是說ISR中包含了所有提交的訊息。ISR應該總是包含所有的副本,直到出現真正的故障。如果一個副本從leader中脫離出來,將會從ISR中刪除。
11、Kafka為什麼需要複製?
Kafka的資訊複製確保了任何已釋出的訊息不會丟失,並且可以在機器錯誤、程式錯誤或更常見些的軟體升級中使用。
12、如果副本在ISR中停留了很長時間表明什麼?
如果一個副本在ISR中保留了很長一段時間,那麼它就表明,跟蹤器無法像在leader收集資料那樣快速地獲取資料。
13、請說明如果首選的副本不在ISR中會發生什麼?
如果首選的副本不在ISR中,控制器將無法將leadership轉移到首選的副本。
14、有可能在生產後發生訊息偏移嗎?
在大多數佇列系統中,作為生產者的類無法做到這一點,它的作用是觸發並忘記訊息。broker將完成剩下的工作,比如使用id進行適當的元資料處理、偏移量等。
作為訊息的使用者,你可以從Kafka broker中獲得補償。如果你注視SimpleConsumer類,你會注意到它會獲取包括偏移量作為列表的MultiFetchResponse物件。此外,當你對Kafka訊息進行迭代時,你會擁有包括偏移量和訊息傳送的MessageAndOffset物件。
15、kafka提高吞吐量的配置
最基礎的配置是
batch.size 預設是單批次最大16384位元組,超過該值就立即傳送。
linger.ms 預設是0ms,超過該時間就立即傳送。
上面兩個條件滿足其一,就立即傳送訊息否則等待。
本文由浪尖修改完善自http://www.toutiao.com/i6456660580726997517
推薦閱讀: