Kafka的生成者、消費者、broker的基本概念
阿新 • • 發佈:2018-12-18
kafka是一款基於釋出與訂閱的訊息系統。它一般被稱為“分散式提交日誌”或者“分散式流平臺”。檔案系統或者資料庫提交日誌用來提供所有事物的持久化記錄,通過重建這些日誌可以重建系統的狀態。同樣地,kafka的資料是按照一定順序持久化儲存的,可以按需讀取。
-
1、kafka拓撲結構
-
2、Kafka的特點
- 同時為分佈和訂閱提供高吞吐量。據瞭解,Kafka每秒可以生產約25萬條訊息(50MB),每秒處理55萬條訊息(110MB)這裡說條數,可能不上特別準確,因為訊息的大小可能不一致;
- 可進行持久化操作,將訊息持久化到到磁碟,以日誌的形式儲存,因此可用於批量消費,例如ETL,以及實時應用程式。 通過將資料持久化到硬碟以及replication防止資料丟失。
- 分散式系統,易於向外拓展。所有的Producer、broker和consumer都會有多個,均為分散式。無需停機即可拓展機器。
- 訊息被處理的狀態是在consumer端維護,而不是由server端維護,當失敗時能自動平衡。
- 支援Online和offline的場景。
-
3、Kafka的核心概念
名詞 | 解釋 |
Producer | 訊息的生成者 |
Consumer | 訊息的消費者 |
ConsumerGroup | 消費者組,可以並行消費Topic中的partition的訊息 |
Broker | 快取代理,Kafka叢集中的一臺或多臺伺服器統稱broker. |
Topic | Kafka處理資源的訊息源(feeds of messages)的不同分類 |
Partition | Topic物理上的分組,一個topic可以分為多個partion,每個partion是一個有序的佇列。partion中每條訊息都會被分 配一個 有序的Id(offset) |
Message | 訊息,是通訊的基本單位,每個producer可以向一個topic(主題)釋出一些訊息 |
Producers | 訊息和資料生成者,向Kafka的一個topic釋出訊息的 過程叫做producers |
Consumers | 訊息和資料的消費者,訂閱topic並處理其釋出的消費過程叫做consumers |
-
3.1 Producers的概念
- 訊息和資料生成者,向Kafka的一個topic釋出訊息的過程叫做producers
- Producer將訊息釋出到指定的Topic中,同時Producer也能決定將此訊息歸屬於哪個partition;比如基於round-robin方式 或者通過其他的一些演算法等;
- 非同步傳送批量傳送可以很有效的提高發送效率。kafka producer的非同步傳送模式允許進行批量傳送,先將訊息快取到記憶體中,然後一次請求批量傳送出去。
-
3.2 broker的概念:
- Broker沒有副本機制,一旦broker宕機,該broker的訊息將都不可用。
- Broker不儲存訂閱者的狀態,由訂閱者自己儲存。
- 無狀態導致訊息的刪除成為難題(可能刪除的訊息正在被訂閱),Kafka採用基於時間的SLA(服務保證),訊息儲存一定時間(通常7天)後會刪除。
- 消費訂閱者可以rewind back到任意位置重新進行消費,當訂閱者故障時,可以選擇最小的offset(id)進行重新讀取消費訊息
-
3.3 Message組成
- Message訊息:是通訊的基本單位,每個producer可以向一個topic釋出訊息。
- Kafka中的Message是以topic為基本單位組織的,不同的topic之間是相互獨立的,每個topic又可以分成不同的partition每個partition儲存一部分
- partion中的每條Message包含以下三個屬性:
offset | long |
MessageSize | int32 |
data | messages的具體內容 |
-
3.4 Consumers的概念
訊息和資料消費者,訂閱topic並處理其釋出的訊息的過程叫做consumers. 在kafka中,我們可以認為一個group是一個“訂閱者”,一個topic中的每個partions只會被一個“訂閱者”中的一個consumer 消費,不過一個consumer可以消費多個partitions中的訊息 注: Kafka的設計原理決定,對於一個topic,同一個group不能多於partition個數的consumer同時消費,否則將意味著某些 consumer無法得到訊息