Kafka基礎(十一): 基本面試題(一)
1)Kafka中的ISR、AR代表什麼?
ISR:與leader保持同步的follower集合
AR:分割槽的所有副本
2)Kafka中的HW、LEO等分別代表什麼?
HW:一個分割槽的所有副本的最小offset
LEO:每個副本的最後訊息的offset
3)Kafka中是怎麼體現訊息順序性的?
每個分割槽內,每條訊息都有一個offset,所以只能保證分割槽的有序
4)Kafka中的分割槽器、序列化器、攔截器是否瞭解?它們之間的處理順序是什麼?
Producer 攔截器(interceptor)主要用於實現 clients 端的定製化控制邏輯。
序列化器主要用於實現序列化,方便網路傳輸。
分割槽器:實現佇列分割槽
處理順序:攔截器-》序列化器-》分割槽器
5)Kafka生產者客戶端的整體結構是什麼樣子的?使用了幾個執行緒來處理?分別是什麼?
Kafka的Producer傳送訊息採用的是非同步傳送的方式。在訊息傳送的過程中,涉及到了兩個執行緒——main執行緒和Sender執行緒,以及一個執行緒共享變數——RecordAccumulator。main執行緒將訊息傳送給RecordAccumulator,Sender執行緒不斷從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)觸發
(3)kafka Controller 負責topic的建立工作,並更新metadata cache
11)topic的分割槽數可不可以增加?如果可以怎麼增加?如果不可以,那又是為什麼?
可以增加
bin/kafka-topics.sh --zookeeper hadoop102:2181/kafka --alter --topic topic-config --partition 3
12)topic的分割槽數可不可以減少?如果可以怎麼減少?如果不可以,那又是為什麼?
不可以,被刪除的分割槽資料難以處理
13)Kafka有內部的topic嗎?如果有是什麼?有什麼作用?
有 __consumer_offsets 儲存消費者offset
14)Kafka分割槽分配的概念?
一個topic多個分割槽,一個消費者組多個消費者,故需要將分割槽分配給消費者
15)簡述Kafka的日誌目錄結構?
每個分割槽對應一個資料夾,資料夾命名為topic-0,topic-1,內部為log和.index檔案
16)如果我指定了一個offset,Kafka 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選舉等工作
18)Kafka中有那些地方需要選舉?這些地方的選舉策略又有哪些?
partition leader(ISR),controller(先到先得)
19)失效副本是指什麼?有那些應對措施?
OSR:不能及時與leader同步,暫時踢出ISR,等其追上leader之後再重新加入
20)Kafka的那些設計讓它有如此高的效能?
分割槽,順序寫磁碟,0-copy