學習Apache Kafka

1. Apache Kafka

挑戰:①收集海量數據;②分析。

分析包括:用戶行爲數據、應用程序的性能跟蹤、以日誌形式顯示的動態數據、事件信息…

kafka可處理實時信息並很快地將其路由到多個消費者。提供了生產者之間信息的無縫集成,不需阻塞消費,生產者不需關心消費者是誰。

它是一個開源的、分佈式的、分區的和基於複製 日誌提交的發佈-訂閱消息傳遞系統。

①持久性消息傳遞: 保證消息不丟失,提供O(1)常量時間性能的磁盤設計,支持大容量存儲(TB)。信息持久化到硬盤,且在集羣中複製,以防數據丟失;
高吞吐量: 每秒處理數百MB的讀和寫操作;
分佈式: 以集羣爲中心,在kafka服務器上進行消息分區(在每個分區維護ordering semantics),並在集羣上分發消費。集羣可彈性、透明地增長,而不需停機;
多客戶端: 支持簡單集成來自不同平臺的客戶端(Java、NET、PHP、Ruby、Python);
實時: 由生產者線程生成的消息對消費者線程立即可見(該特性對基於事件的系統非常重要,eg.複雜事件處理(CEP)系統)

提供了一種實時的發佈-訂閱解決方案,還支持Hadoop中的並行數據加載。

在生產方面,有不同類型的生產者: eg.
①前端web應用程序生成的日誌;
②生成web分析日誌的生產者代理;
③生成轉換日誌的生產者適配器;
④生成調用跟蹤日誌的生產者服務。

在消費方面: eg.
①離線消費者,正在使用消息並將其存儲在Hadoop或傳統數據倉庫,用於離線分析;
②接近實時的消費者,正在消費信息並將其存儲在NoSQL(eg.HBase或Cassandra),用於近實時分析;
③像Spark或Storm,可在內存中過濾消息,爲相關組觸發警報事件。

2. Why do we need Kafka?

數據通常包括用戶活動、事件登錄、頁面訪問、點擊、社交網絡活動,如“贊”、“分享”和“評論”、操作
和系統指標(由於高吞吐量(每秒數百萬條消息),所以通常由日誌記錄&傳統日誌聚合解決方案處理——面向離線分析eg.hadoop)
對構建實時處理系統非常侷限。

實時分析包括:
①基於搜索的相關性、基於受歡迎程度、共同發生或情感分析的建議、向大衆投放廣告、從垃圾郵件或未經授權的數據抓取、發送高溫警報的設備傳感器、任何異常的用戶行爲或應用程序的黑客行爲。

從生產系統收集的這些多組數據的實時使用情況,由於收集和處理的數據量大而成爲一個挑戰。

kafka目標是通過提供一種機制來統一線下和線上處理:
Hadoop系統中的並行負載以及在一組機器上的分區實時消耗的能力(處理流式數據很有用)。
從架構的角度來看,它更接近於傳統的消息傳遞系統,如ActiveMQ或RabitMQ。

參考:Learning Apache Kafka Second Edition

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章