1.Kafka
中的ISR
、AR
代表什麼?
ISR
:與leader
保持同步的follower
集合
AR
:分區的所有副本
2.Kafka
中的HW
、LEO
分別代表什麼?
LEO
:每個副本的最後條消息的offset
HW
:一個分區中所有副本最小的offset
3.offset
中是怎麼體現消息順序性的?
每個分區內,每條消息都有一個offset
,故只能保證分區內有序
4.offset
中的分區器、序列化器、攔截器是否瞭解?它們之間的處理順序是什麼?
攔截器 -> 序列化器 -> 分區器
5.Kafka
生產者客戶端的整體結構是什麼樣子的?使用了幾個線程來處理?分別是什麼?
6.消費組中的消費者個數如果超過Topic
的分區,那麼就會有消費者消費不到數據這句話是否正確?
正確
7.消費者提交消費位移時提交的是當前消費到的最新消息的offset
還是offset+1
?
offset+1
8.有哪些情形會造成重複消費?
9.那些情景會造成消息漏消費?
先提交offset
,後消費,有可能造成數據的重複
10.當你使用kafka-topics.sh
創建了一個Topic
之後,Kafka背後會執行什麼邏輯?
會在ZK
中的/brokers/topics
節點下創建一個新的Topic
節點
觸發Controller
的監聽程序
Kafka Controller
負責Topic
的創建工作,並更新metadata cache
11.Topic
的分區數可不可以增加?如果可以怎麼增加?如果不可以,那又是爲什麼?
可以增加
bin/kafka-topics.sh --zookeeper localhost:2181/kafka --alter --topic topic-config --partitions 3
12.Topic
的分區數可不可以減少?如果可以怎麼減少?如果不可以,那又是爲什麼?
不可以減少,被刪除的分區數據難以處理
13.Kafka
有內部的Topic
嗎?如果有是什麼?有什麼所用?
__consumer_offsets
,保存消費者offset
14.Kafka
分區分配的概念?
一個Topic
多個分區,一個消費者組多個消費者,故需要將分區分配個消費者(roundrobin
、range
)
15.簡述Kafka
的日誌目錄結構?
每個分區對應一個文件夾,文件夾的命名爲topic-0
,topic-1
,內部爲.log
和.index
文件
16.如果我指定了一個offset
,Kafka Controller
怎麼查找到對應的消息?
17.聊一聊Kafka Controller
的作用?
負責管理集羣Broker
的上下線,所有Topic
的分區副本分配和leader
選舉等工作
18.Kafka
中有那些地方需要選舉?這些地方的選舉策略又有哪些?
partition leader(ISR)
`controller
(先到先得)
19.失效副本是指什麼?有那些應對措施?
不能及時與leader
同步,暫時踢出ISR
,等其追上leader
之後再重新加入
20.Kafka
的那些設計讓它有如此高的性能?
分區
順序寫磁盤
零拷貝