1.簡述
Kafka是由Apache軟件基金會開發的一個開源流處理平臺,有Scala與Java編寫。kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它可以處理消費者在網站中所有的動作流數據。
這種動作(包含用戶所有的行爲等數據)是現在網絡上的許多社會功能的一個關鍵因素。這些數據通常由於吞吐量的要求而通過處理日誌和日誌的聚合來解決。對於像Hadoop一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來同一線上和離線的消息處理,也是爲了通過集羣來提供實時的消息。
2.特點
Kafka是一種高吞吐量的分佈式訂閱消息系統,有如下特徵:
-
通過O(1)的磁盤數據結構提供消息的持久化,這種結構對於即使數據以TB的消息存儲也能保持長時間的穩定性能。
-
高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒數百萬的消息。
-
支持通過Kafka服務器的消費機制集羣來分區消息。
-
支持Hadoop並行數據加載。
3.相關的術語
-
Broker: Kafka集羣包含一個或者多個服務器,這種服務器被稱爲broker;
-
Topic:每條發佈到Kafka集羣的消息都有一個類別,這種類別被稱爲Topic。(物理上不同的Topic的消息分開存儲,邏輯上一個Topic的消息雖然保存於一個或者多個Broker上,但是用戶需要指定消息的Topic即可生產或者消費數據而不關心數據存於何處);
-
Partition:Partition是物理上的概念,每個Topic包含一個或者多個Partition。
-
Producer:負責發佈消息到Kafka Broker
-
Consumer:消息消費者,向Kafka Broker讀取消息的客戶端。
-
Consumer Group: 每個Consumer屬於一個特定的Consumer Group(可以爲每個Consumer指定group name,若不指定group name則屬於默認的group)。
4.主要的三部分模塊(如上圖):
-
發佈&訂閱
-
處理
-
存儲