1. 程式人生 > >【圖文詳細 】Kafka訊息佇列——Kafka的應用場景

【圖文詳細 】Kafka訊息佇列——Kafka的應用場景

3.1、訊息系統

Kafka 很好地替代了傳統的 message broker(訊息代理)。Message Brokers 可用於各種場合(如 將資料生成器與資料處理解耦,緩衝未處理的訊息等)。與大多數訊息系統相比,Kafka 擁有 更好的吞吐量、內建分割槽、具有複製和容錯的功能,這使它成為一個非常理想的大型訊息處 理應用。根據我們的經驗,通常訊息傳遞使用較低的吞吐量,但可能要求較低的端到端延遲, Kafka 提供強大的永續性來滿足這一要求。在這方面,Kafka 可以與傳統的訊息傳遞系統 (ActiveMQ 和 RabbitMQ)相媲美。

3.2、跟蹤網站活動

Kafka 的初始用例是將使用者活動跟蹤管道重建為一組實時釋出-訂閱源。這意味著網站活動 (瀏覽網頁、搜尋或其他的使用者操作)將被髮布到中心 topic,其中每個活動型別有一個 topic。
 這些訂閱源提供一系列用例,包括實時處理、實時監視、對載入到 Hadoop 或離線資料倉庫 系統的資料進行離線處理和報告等。每個使用者瀏覽網頁時都生成了許多活動資訊,因此活動 跟蹤的資料量通常非常大 。

 

3.3、運營指標

Kafka 也經常用來記錄運營監控資料。包括收集各種分散式應用的資料,生產各種操作的集 中反饋,比如報警和報告。 

3.4、日誌聚合

許多人使用Kafka來替代日誌聚合解決方案。日誌聚合系統通常從伺服器收集物理日誌檔案, 並將其置於一箇中心繫統(可能是檔案伺服器或 HDFS)進行處理。Kafka 從這些日誌檔案中 提取資訊,並將其抽象為一個更加清晰的訊息流。這樣可以實現更低的延遲處理且易於支援 多個數據源及分散式資料的消耗。與 Scribe 或 Flume 等以日誌為中心的系統相比,Kafka 具 備同樣出色的效能、更強的耐用性(因為複製功能)和更低的端到端延遲。 
 

3.5、流處理

許多 Kafka 使用者通過管道來處理資料,有多個階段:從 Kafka topic 中消費原始輸入資料,然後聚合,修飾或通過其他方式轉化為新的 topic,以供進一步消費或處理。 例如,一個推薦 新聞文章的處理管道可以從 RSS 訂閱源抓取文章內容並將其釋出到“文章”topic; 然後對這 個內容進行標準化或者重複的內容,並將處理完的文章內容釋出到新的 topic; 最終它會嘗試 將這些內容推薦給使用者。 這種處理管道基於各個topic建立實時資料流圖。從0.10.0.0開始, 在 Apache Kafka 中,Kafka Streams 可以用來執行上述的資料處理,它是一個輕量但功能強大 的流處理庫。除 Kafka Streams 外,可供替代的開源流處理工具還包括 Apache Storm 和 Apache Samza。 

3.6、採集日誌

Event Sourcing 是一種應用程式設計風格,按時間來記錄狀態的更改。Kafka 可以儲存非常多 的日誌資料,為基於 Event Sourcing 的應用程式提供強有力的支援。 

 

3.7、提交日誌

Kafka 可以從外部為分散式系統提供日誌提交功能。日誌有助於記錄節點和行為間的資料, 採用重新同步機制可以從失敗節點恢復資料。Kafka 的日誌壓縮功能支援這一用法。這一點 與 Apache BookKeeper 專案類似。