在深入學習Kafka之前,需要先瞭解topics, brokers, producers和consumers等幾個主要術語。 下麵說明了主要術語的詳細描述和組件。
在上圖中,主題(topic)被配置為三個分區。 分區1(Partition 1)具有兩個偏移因數0
和1
。分區2(Partition 2)具有四個偏移因數0
,1
,2
和3
,分區3(Partition 3)具有一個偏移因數0
。replica 的id與託管它的伺服器的id相同。
假設,如果該主題的複製因數設置為3
,則Kafka將為每個分區創建3個相同的副本,並將它們放入群集中以使其可用於其所有操作。 為了平衡集群中的負載,每個代理存儲一個或多個這些分區。 多個生產者和消費者可以同時發佈和檢索消息。
- Topics - 屬於特定類別的消息流被稱為主題(Topics),數據存儲在主題中。主題分為多個分區。 對於每個主題,Kafka都保留一個分區的最小範圍。 每個這樣的分區都以不可變的有序順序包含消息。 分區被實現為一組相同大小的段檔。
- Partition - 主題可能有很多分區,所以它可以處理任意數量的數據。
- Partition offset - 每個分區消息都有一個稱為偏移量的唯一序列標識。
- Replicas of partition - 副本只是分區的備份。 副本從不讀取或寫入數據。 它們用於防止數據丟失。
Brokers
- 經紀人(Brokers)是簡單的系統,負責維護公佈的數據。 每個代理可能每個主題有零個或多個分區。 假設,如果一個主題和
N
個代理中有N
個分區,則每個代理將有一個分區。 - 假設某個主題中有N個分區並且N個代理(n + m)多於N個,則第一個N代理將擁有一個分區,下一個M代理將不會擁有該特定主題的任何分區。
- 假設某個主題中有N個分區且N個代理(n-m)少於N個代理,則每個代理將擁有一個或多個分區共用。 由於經紀人之間的負載分配不均衡,不推薦這種情況。
- 經紀人(Brokers)是簡單的系統,負責維護公佈的數據。 每個代理可能每個主題有零個或多個分區。 假設,如果一個主題和
Kafka Cluster - Kafka擁有多個經紀人稱為Kafka集群。 Kafka集群可以在無需停機的情況下進行擴展。 這些集群用於管理消息數據的持久性和複製。
- Producers - 生產者(Producer)是一個或多個Kafka主題的發佈者。 生產者向Kafka經紀人發送數據。 每當生產者向經紀人發佈消息時,經紀人只需將消息附加到最後一個段檔。 實際上,該消息將被附加到分區。 生產者也可以將消息發送到他們選擇的分區。
- Consumers - 消費者從經紀人那裏讀取數據。 消費者通過從經紀人處獲取數據來訂閱一個或多個主題並消費發佈的消息。
- Leader - Leader是負責所有分區讀寫的節點。 每個分區都有一臺伺服器充當領導者。
- Follower - 遵循領導者(Leader)指示的節點稱為追隨者(Follower)。 如果領導失敗,其中一個追隨者將自動成為新領導。 追隨者扮演正常的消費者角色,拉動消息並更新自己的數據存儲。
上一篇:
Kafka簡介
下一篇:
Kafka群集體系結構