1. 程式人生 > 實用技巧 >Kafka基礎(十一): 基本面試題(一)

Kafka基礎(十一): 基本面試題(一)

1Kafka中的ISRAR代表什麼?

ISR:與leader保持同步的follower集合

AR:分割槽的所有副本

2Kafka中的HWLEO等分別代表什麼?

HW:一個分割槽的所有副本的最小offset

LEO:每個副本的最後訊息的offset

3Kafka中是怎麼體現訊息順序性的?

每個分割槽內,每條訊息都有一個offset,所以只能保證分割槽的有序

4Kafka中的分割槽器、序列化器、攔截器是否瞭解?它們之間的處理順序是什麼?

Producer 攔截器(interceptor)主要用於實現 clients 端的定製化控制邏輯。

序列化器主要用於實現序列化,方便網路傳輸。

分割槽器:實現佇列分割槽

處理順序:攔截器-》序列化器-》分割槽器

5Kafka生產者客戶端的整體結構是什麼樣子的?使用了幾個執行緒來處理?分別是什麼?

  KafkaProducer傳送訊息採用的是非同步傳送的方式。在訊息傳送的過程中,涉及到了兩個執行緒——main執行緒和Sender執行緒,以及一個執行緒共享變數——RecordAccumulatormain執行緒將訊息傳送給RecordAccumulatorSender執行緒不斷從RecordAccumulator中拉取訊息傳送到Kafkabroker

6“消費者組中的消費者個數如 果超過topic的分割槽,那麼就會有消費者消費不到資料”這句話是否正確?

正確:一個消費者固定對應一個或多個topic分割槽,一個topic分割槽只能被一個固定消費者消費

7)消費者提交消費位移時提交的是當前消費到的最新訊息的offset還是offset+1

offset+1

8)有哪些情形會造成重複消費?

同步與非同步都會造成重複消費

9)那些情景會造成訊息漏消費?

先提交offset,後消費,有可能造成資料的遺漏

10)當你使用kafka-topics.sh建立(刪除)了一個topic之後,Kafka背後會執行什麼邏輯?

1)會在zookeeper中的/brokers/topics節點下建立一個新的topic節點,如:/brokers/topics/first

2)觸發

Controller的監聽程式

3kafka Controller 負責topic的建立工作,並更新metadata cache

11topic的分割槽數可不可以增加?如果可以怎麼增加?如果不可以,那又是為什麼?

可以增加

bin/kafka-topics.sh --zookeeper hadoop102:2181/kafka --alter --topic topic-config --partition 3

12topic的分割槽數可不可以減少?如果可以怎麼減少?如果不可以,那又是為什麼?

不可以,被刪除的分割槽資料難以處理

13Kafka有內部的topic嗎?如果有是什麼?有什麼作用?

有 __consumer_offsets 儲存消費者offset

14Kafka分割槽分配的概念?

一個topic多個分割槽,一個消費者組多個消費者,故需要將分割槽分配給消費者

15)簡述Kafka的日誌目錄結構?

每個分割槽對應一個資料夾,資料夾命名為topic-0,topic-1,內部為log和.index檔案

16)如果我指定了一個offsetKafka Controller怎麼查詢到對應的訊息?

  由於生產者生產的訊息會不斷追加到log檔案末尾,為防止log檔案過大導致資料定位效率低下,Kafka採取了分片索引機制,將每個partition分為多個segment。每個segment對應兩個檔案——“.index”檔案和“.log”檔案。這些檔案位於一個資料夾下,該資料夾的命名規則為:topic名稱+分割槽序號。例如,first這個topic有三個分割槽,則其對應的資料夾為first-0,first-1,first-2。

00000000000000000000.index
00000000000000000000.log
00000000000000170410.index
00000000000000170410.log
00000000000000239430.index
00000000000000239430.log

index和log檔案以當前segment的第一條訊息的offset命名。下圖為index檔案和log檔案的結構示意圖。

“.index”檔案儲存大量的索引資訊,“.log”檔案儲存大量的資料,索引檔案中的元資料指向對應資料檔案中message的物理偏移地址。

17)聊一聊Kafka Controller的作用?

負責管理叢集broker的上下線,所有topic的分割槽副本分配和leader選舉等工作

18Kafka中有那些地方需要選舉?這些地方的選舉策略又有哪些?

partition leader(ISR),controller(先到先得)

19)失效副本是指什麼?有那些應對措施?

OSR:不能及時與leader同步,暫時踢出ISR,等其追上leader之後再重新加入

20Kafka的那些設計讓它有如此高的效能?

分割槽,順序寫磁碟,0-copy