kafka術語

1. kafka中術語介紹

Broker:kafka集羣中包含一個或者多個服務實例,這種服務實例被稱爲Broker
Topic:每條發佈到kafka集羣的消息都有一個類別,這個類別就叫做Topic
Partition:Partition是一個物理上的概念,每個Topic包含一個或者多個Partition
Producer:負責發佈消息到kafka的Broker中。
Consumer:消息消費者,向kafka的broker中讀取消息的客戶端
Consumer Group:每一個Consumer屬於一個特定的Consumer Group(可以爲每個Consumer指定 groupName)

2. kafka中topic說明

  • kafka將消息以topic爲單位進行歸類

  • topic特指kafka處理的消息源(feeds of messages)的不同分類。

  • topic是一種分類或者發佈的一些列記錄的名義上的名字。kafka主題始終是支持多用戶訂閱的;也就是說,一 個主題可以有零個,一個或者多個消費者訂閱寫入的數據。

  • 在kafka集羣中,可以有無數的主題。

  • 生產者和消費者消費數據一般以主題爲單位。更細粒度可以到分區級別。

3.kafka中分區數(Partitions)

Partitions:分區數

Partitions:分區數:控制topic將分片成多少個log,可以顯示指定,如果不指定則會使用 broker(server.properties)中的num.partitions配置的數量。
  • 一個broker服務下,是否可以創建多個分區?
    可以的,broker數與分區數沒有關係;
  • 在kafka中,每一個分區會有一個編號:編號從0開始
  • 某一個分區的數據是有序的

在這裏插入圖片描述

  • 說明-數據是有序 如何保證一個主題下的數據是有序的?(生產是什麼樣的順序,那麼消費的時候也是什麼樣的順序)
一個主題(topic)下面有一個分區(partition)即可
  • topic的Partition數量在創建topic時配置。

  • Partition數量決定了每個Consumer group中併發消費者的最大數量。

  • Consumer group A 有兩個消費者來讀取4個partition中數據;Consumer group B有四個消費者來讀取4個 partition中的數據

在這裏插入圖片描述

4 kafka中副本數( Partition Replication)

kafka分區副本數(kafka Partition Replicas)
在這裏插入圖片描述
副本數(replication-factor)

副本數(replication-factor):控制消息保存在幾個broker(服務器)上,一般情況下等於broker的個數

一個broker服務下,是否可以創建多個副本因子?
不可以;創建主題時,副本因子應該小於等於可用的broker數。 副本因子過程圖

在這裏插入圖片描述

副本因子操作以分區爲單位的。每個分區都有各自的主副本和從副本;主副本叫做leader,從副本叫做 follower(在有多個副本的情況下,kafka會爲同一個分區下的分區,設定角色關係:一個leader和N個 follower),處於同步狀態的副本叫做in-sync-replicas(ISR);follower通過拉的方式從leader同步數據。消費 者和生產者都是從leader讀寫數據,不與follower交互。

副本因子的作用:讓kafka讀取數據和寫入數據時的可靠性。

副本因子是包含本身|同一個副本因子不能放在同一個Broker中。

如果某一個分區有三個副本因子,就算其中一個掛掉,那麼只會剩下的兩個鍾,選擇一個leader,但不會在其 他的broker中,另啓動一個副本(因爲在另一臺啓動的話,存在數據傳遞,只要在機器之間有數據傳遞,就 會長時間佔用網絡IO,kafka是一個高吞吐量的消息系統,這個情況不允許發生)所以不會在零個broker中啓 動。

如果所有的副本都掛了,生產者如果生產數據到指定分區的話,將寫入不成功。

lsr表示:當前可用的副本

5 kafka Partition offset

任何發佈到此partition的消息都會被直接追加到log文件的尾部,每條消息在文件中的位置稱爲offset(偏移量),

offset是一個long類型數字,它唯一標識了一條消息,消費者通過(offset,partition,topic)跟蹤記錄。

在這裏插入圖片描述

6. kafka分區和消費組之間的關係

消費組: 由一個或者多個消費者組成,同一個組中的消費者對於同一條消息只消費一次。
某一個主題下的分區數,對於消費組來說,應該小於等於該主題下的分區數。如下所示:

如:某一個主題有4個分區,那麼消費組中的消費者應該小於4,而且最好與分區數成整數倍
1	2	4
同一個分區下的數據,在同一時刻,不能同一個消費組的不同消費者消費

總結:分區數越多,同一時間可以有越多的消費者來進行消費,消費數據的速度就會越快,提高消費的性能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章