簡介
相信從事IT行業的你一定有聽過Kafka這門消息隊列技術。個人認爲是隨着行業的不斷成熟,出現了越來越多的系統,系統間的信息傳輸愈發頻繁,這促使了消息隊列技術的誕生。而Kafka由於其較強的性能與可靠性在各類技術中脫穎而出。
希望本篇文章能對你入門Kafka帶來一點幫助。
基礎架構說明
作爲消息隊列技術,就類似於Kafka當個快遞員,把快遞(消息)從A傳輸到B手中。如上圖所示,小智A就是消息生產者(Producer),可達鴨B就是消息消費者(Consumer)
如果小智把食物發給可達鴨一隻神奇寶貝,那運輸的過程十分簡單。但如果小智這時打算把食物分發給多個神奇寶貝,卻只給了一大盒食物,神奇寶貝在喫食物的時候就容易搶食;
所以小智學聰明瞭,他決定把食物放到3個盒子裏,分別對應3個神奇寶貝;這樣他們就能有序的喫自己的食物,不容易混亂。這種把食物(消息)分成多份,並與消費者一一對應的方法,在Kafka裏就叫分區Partition。
emmmm… 我覺得我編不下去了哈哈哈,放一下Kafka的各種術語的解釋吧!
基礎專業術語解釋
-
Producer
消息生產者; 如Flume抽取的數據;
如小智買的食物; -
Consumer
消息消費者; 如Spark Streaming消費數據;
如想喫食物的可達鴨 -
Consumer Group
消費者組; 由多個 Comsumer組成;
如上圖中喫食物的傑尼龜,可達鴨,皮卡丘 -
Broker
一臺服務器就是一個Broker
編不下去了… -
Topic
可以理解爲一個隊列;生產者與消費者面向的都是一個隊列;
好比食物的種類? -
Partition
分區,類似Spark中的Partition;將數據分到不同的Partition中;但每個Partition都是一個有序隊列;
相當於上圖中的飼料碗,保證餵食有序進行… -
Replica
副本,當集羣故障的時候可以快速恢復數據;
每個Partition有多個Replica副本;
每個分區Partition都有一個Leader和多個Follower -
Leader
Partition中的主信息;Producer發送數據的對象,Consumer消費數據的對象;
我覺得Leader某種程度上等價於Partition; -
Follower
不停的向Leader同步數據;當Leader掛掉的時候,Follower就會重新競選生成Leader;
面試題
-
Kafka中的ISR,AR代表什麼?
ISR(In-Sync Replica): 與 Leader保護同步的follower集合
AR(Assigned Replica): 分區的所有副本 -
Kafka中的HW,LEO等分別代表什麼?
LEO (Log End Offset): 當前日誌文件中的下一條要寫入消息的Offset
HW (High Watermak): 高水位,標誌Consumer可消費的日誌的範圍;
如 HW = 6,則Consumer可消費的範圍是0 ~ 5https://www.cnblogs.com/yoke/p/11486196.html
-
Kafka中是怎麼體現消息順序性的?
每個分區內,每條消息都有一個offset,保證分區內有序 -
Kafka中的分區器,序列化器,攔截器是否瞭解?他們之間的順序是如何?
攔截器 --> 序列化器 --> 分區器 -
Kafka生產者客戶端的整體結構是什麼樣子的?使用了幾個線程來處理?
main線程,sender線程 -
討論消費者組中的消費者個數 M 與 topic的分區數 N 關係
M > N: 有消費者無法數據
M = N: 消費者 與 分區 一一對應
M < N: 有消費者消費多個分區