02.Kafka基本概念詳解
阿新 • • 發佈:2020-10-21
Kafka概念詳解——http://kafka.apache.org/24/documentation.html
Kafka的基本概念
Broker:
- Kafka叢集包含一個或多個伺服器,這種伺服器被稱為broker。
- broker端不維護資料的消費狀態,提升了效能。
- 直接使用磁碟進行儲存,線性讀寫,速度快:避免了資料在JVM記憶體和系統記憶體之間的複製,
減少耗效能的建立物件和垃圾回收。
Producer:
負責釋出訊息到Kafka broker
Consumer:
訊息消費者,向Kafka broker讀取訊息的客戶端,consumer從broker拉取(注意是拉去不是broker推送)資料並進行處理。
Consumer Group:
- 每個Consumer屬於一個特定的Consumer Group(可為每個Consumer指定group name,若不指定group name則屬於預設的group)
Topic:
- 每條釋出到Kafka叢集的訊息都有一個類別,這個類別被稱為Topic。
- 一個邏輯的概念,由1到多個分割槽(Partition)組成。
- Topic類似於檔案系統中的資料夾,events是目錄中的檔案
- 一個Topic可以被多個使用者操作
- 每個Topic KafKa叢集都會維護一個分割槽日誌
Partition:
- 實際訊息儲存單位
- 一個或多個Partition構成Topic
- 每個分割槽都是順序,不可變的佇列
- 每個分割槽是一組有序的訊息日誌
- 每個分割槽都有一個物理日誌檔案
- 分割槽的數量在執行期間可以增加,但是不能減少
- 生產者生產的訊息,只會發給主題的一個分割槽
- 一個topic的分割槽可以分佈在不同的broker上
offset
- 屬於分割槽裡的一個概念
- 當訊息到達分割槽時,該訊息會有一個標識id就叫offset
- offset是訊息在分割槽中的唯一標識
- KafKa通過offset來保證分割槽內訊息的順序性
- offset不跨分割槽
- offset從0開始,依次遞增
Replica
- 屬於分割槽裡的一個概念
- 一個分割槽內的訊息可以有多個副本
- 與ES的副本機制類似
- 副本分為leader和follower
- leader副本負責處理讀寫請求
- follower副本只負責與leader副本的訊息同步
- 副本分散在不同的broker中,當leader副本出現故障時,從follower副本中重新選舉新的leader副本
- 分割槽中所有副本統稱為AR
- 某Topic比如有三個分割槽每個分割槽三個副本如下圖: