這是Apache Kafka®的一些流行用例的描述,有關這些領域的一些概況,請參閱這個博客。html
Kafka能夠很好地替代更傳統的消息代理,消息代理的使用有多種緣由(從數據生產者分離處理、緩衝未處理的消息等),與大多數消息傳遞系統相比,Kafka具備更好的吞吐量、內置的分區、複製和容錯能力,這使它成爲大型消息處理應用程序的良好解決方案。apache
在咱們的經驗中,消息傳遞使用的吞吐量一般相對較低,但可能須要較低的端到端延遲,而且一般依賴於Kafka提供的強大的持久性保證。後端
在這個領域,Kafka能夠與傳統的消息系統(如ActiveMQ或RabbitMQ)相媲美。服務器
Kafka最初的用例是可以將用戶活動跟蹤管道重建爲一組實時發佈訂閱源,這意味着站點活動(頁面視圖、搜索或用戶可能採起的其餘操做)被髮布到中心主題,每一個活動類型有一個主題,這些源可用於訂閱一系列用例,包括實時處理、實時監視和加載到Hadoop或離線數據倉庫系統中,以便離線處理和報告。分佈式
活動跟蹤一般是很是高的量,由於每一個用戶頁面視圖都會生成許多活動消息。工具
Kafka一般用於操做監控數據,這包括從分佈式應用程序收集統計數據,以生產操做數據的集中提要。oop
許多人使用Kafka做爲日誌聚合解決方案的替代。日誌聚合一般從服務器收集物理日誌文件,並將它們放在中央位置(多是文件服務器或HDFS)進行處理,Kafka將文件的細節抽象出來,並將日誌或事件數據抽象爲消息流,這容許更低的延遲處理,更容易支持多個數據源和分佈式數據消費,與像Scribe或Flume這樣的以日誌爲中心的系統相比,Kafka一樣具備良好的性能、更強的持久性保證,而且能夠大大下降端到端延遲。性能
許多Kafka用戶處理在由多個階段組成的處理管道中的數據,從Kafka主題中使用原始輸入數據,而後聚合、充實或以其餘方式轉換爲新的主題,以便進一步消費或後續處理。例如,推薦新聞文章的處理管道能夠從RSS提要中抓取文章內容並將其發佈到「articles」主題;進一步的處理可能對內容規範化或去重,並將清理後的文章內容發佈到新主題;最後的處理階段可能嘗試向用戶推薦此內容。這種處理管道基於各個主題建立實時數據流圖,從0.10.0.0開始,Apache Kafka中有一個輕量級但功能強大的流處理庫,名爲Kafka Streams,用於執行如上所述的數據處理,除了Kafka Streams以外,其餘開源流處理工具還包括Apache Storm和Apache Samza。網站
Event Sourcing是一種應用程序設計風格,其中狀態變化被記錄爲時間順序的記錄序列,Kafka對很是大的存儲日誌數據的支持,使它成爲構建這種風格的應用程序的極佳後端。設計
Kafka能夠做爲分佈式系統的一種外部提交日誌,日誌幫助在節點之間複製數據,並做爲失敗節點恢復數據的從新同步機制,Kafka中的日誌壓縮特性有助於支持這種用法,在這個用法中,Kafka相似於Apache BookKeeper項目。