Kafka基礎知識入門篇[新手教程]
kafka簡介
Kafka 是一個分散式的基於釋出/訂閱模式的訊息佇列(Message Queue),主要應用與大資料實時處理領域。其主要設計目標如下:
-
以時間複雜度為O(1)的方式提供訊息持久化能力,即使對TB級以上資料也能保證常數時間的訪問效能
-
高吞吐率。即使在非常廉價的機器上也能做到單機支援每秒100K條訊息的傳輸
-
支援Kafka Server間的訊息分割槽,及分散式消費,同時保證每個partition內的訊息順序傳輸,同時支援離線資料處理和實時資料處理
kafka基礎知識
下面給出 Kafka 一些重要概念,讓大家對 Kafka 有個整體的認識和感知
-
Producer:即訊息生產者,向 Kafka Broker 發訊息的客戶端。
-
Consumer:即訊息消費者,從 Kafka Broker 讀訊息的客戶端。
-
Consumer Group:即消費者組,消費者組內每個消費者負責消費不同分割槽的資料,以提高消費能力。一個分割槽只能由組內一個消費者消費,不同消費者組之間互不影響。
-
Broker:一臺 Kafka 機器就是一個 Broker。一個叢集是由多個 Broker 組成的且一個 Broker 可以容納多個 Topic。
-
Topic:可以簡單理解為佇列,Topic 將訊息分類,生產者和消費者面向的都是同一個 Topic。
-
Partition:為了實現Topic擴充套件性,提高併發能力,一個非常大的 Topic 可以分佈到多個 Broker 上,一個 Topic 可以分為多個 Partition 進行儲存,每個 Partition 是一個有序的佇列。
-
Replica:即副本,為實現資料備份的功能,保證叢集中的某個節點發生故障時,該節點上的 Partition 資料不丟失,且 Kafka 仍然能夠繼續工作,為此Kafka提供了副本機制,一個 Topic 的每個 Partition 都有若干個副本,一個 Leader 副本和若干個 Follower 副本。
-
Leader:即每個分割槽多個副本的主副本,生產者傳送資料的物件,以及消費者消費資料的物件,都是 Leader。
-
Follower:即每個分割槽多個副本的從副本,會實時從 Leader 副本中同步資料,並保持和 Leader 資料的同步。Leader 發生故障時,某個 Follower 還會被選舉併成為新的 Leader , 且不能跟 Leader 在同一個broker上, 防止崩潰資料可恢復。
-
Offset:消費者消費的位置資訊,監控資料消費到什麼位置,當消費者掛掉再重新恢復的時候,可以從消費位置繼續消費。
-
ZooKeeper服務:Kafka 叢集能夠正常工作,需要依賴於 ZooKeeper,ZooKeeper 幫助 Kafka 儲存和管理叢集元資料資訊。在最新版本中, 已經慢慢要脫離 ZooKeeper。