1. 程式人生 > >最常見的Kafka面試題及答案

最常見的Kafka面試題及答案

本文為您盤點最常見的Kafka面試題,同時也是對Apache Kafka初學者必備知識點的一個整理與介紹。

640

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

推薦閱讀:

640