【圖文詳細 】Kafka訊息佇列——Kafka是什麼
1.1、Kafka的概述
在流式計算中,Kafka一般用於資料的快取,Storm通過消費Kafka的資料進行計算。
經典架構:Flume + Kafka + Storm/SparkStreaming + Redis
Apache Kafka最初由LinkedIn開發的基於釋出訂閱的分散式的訊息系統,由Scala/Java編寫,並於 2011 年初開源。2012 年 10 月從 Apache Incubator 畢業,現在是 Apache 軟體基金會負責維護的一個頂級開源訊息系統專案。該專案的目標是為處理實時資料提供一 個統一、高通量、低等待的平臺。它以可水平擴充套件和高吞吐率而被廣泛使用。目前越來越多 的開源分散式處理系統如 Cloudera、Apache Storm、Spark 都支援與 Kafka 整合。
Kafka 是一個分散式訊息佇列:具有生產者、消費者的功能。它提供了類似於 JMS 的特性, 但是在設計實現上完全不同,此外它並不是 JMS 規範的實現。
Kafka對於訊息儲存時根據以Topic進行歸納,傳送訊息者稱為Producer,訊息接受者稱為Consumer,此外 Kafka 叢集有多個 Kafka 例項組成,每個例項(server)成為 broker。
無論是Kafka叢集,還是Producer和Consumer都依賴於ZooKeeper叢集儲存一些meta資訊, 來保證系統可用性
Kafka 官網:http://kafka.apache.org/
1.2、Kafka的特性
高吞吐量、低延遲::kafka 每秒可以處理幾十萬條訊息,它的延遲最低只有幾毫秒,每個 topic 可以分多個 partition,consumer group 對 partition 進行消費操作
可擴充套件性:kafka 叢集支援熱擴充套件
持久化、可靠性:訊息被持久化到本地磁碟,並且支援資料備份防止資料丟失
容錯性:允許叢集中節點失敗(若副本數量為 n,則允許 n-1 個節點失敗)
高併發:支援數千個客戶端同時讀寫