1. 程式人生 > >《KAFKA官方文件》使用場景

《KAFKA官方文件》使用場景

原文連線

以下是Apache Kafka™的一些常見使用場景的描述。有關這些實踐領域的一些概述,請參閱此博文

訊息

Kafka被當作傳統訊息中介軟體的替代品。訊息中介軟體的使用原因有多種(從資料生產者解耦處理,快取未處理的訊息等)。與大多數訊息系統相比,Kafka具有更好的吞吐量,內建的分割槽,多副本和容錯功能,這使其成為大規模訊息處理應用程式的良好解決方案。
在我們的經驗中,訊息的使用通常是相對較低的吞吐量,但可能需要較低的端到端延遲,並且通常需要強大的永續性保證,這些Kafka都能提供。

在這些要點中,Kafka可與傳統訊息系統(如ActiveMQRabbitMQ)媲美。

網站行為跟蹤

Kafka的初衷就是能夠將使用者行為跟蹤管道重構為一組實時釋出-訂閱資料來源。這意味著網站活動(頁面瀏覽量,搜尋或其他使用者行為)將被髮布到中心主題,這些中心主題是每個使用者行為型別對應一個主題的。這些資料來源可被訂閱者獲取並用於一系列的場景,包括實時處理,實時監控和載入到Hadoop或離線資料倉庫系統中進行離線處理和報告。

使用者行為跟蹤通常是非常高的資料量,因為使用者每個頁面瀏覽的都會生成許多行為活動訊息。

測量

kafka經常用於執行監控資料。這涉及彙總分散式應用程式的統計資料,以產生操作運營資料的彙總資料。

日誌聚合

許多人使用Kafka作為日誌蒐集解決方案的替代品。日誌蒐集通常從伺服器收集物理日誌檔案,並將它們集中放置(可能是檔案伺服器或HDFS),以便後續處理。kafka抽象出文件的細節,並將日誌或事件資料作為訊息流清晰地抽象出來。這可以為更低處理延遲提供支援,對多資料來源和分散式資料消費更容易支援。與以日誌為中心的系統(如Scribe或Flume)相比,Kafka效能同樣出色,由於副本機制確保了更強的耐用性保,並且端到端延遲更低。

流處理

許多kafka使用者處理由多個階段組成的處理管道中的資料,其中原始輸入資料從kafka主題消費,然後彙總,豐富或以其他方式轉換為新主題以便進一步消費或後續處理。例如,用於推薦新聞文章的管道可以從RSS提要中抓取文章內容並將其釋出到“文章”主題;進一步規範化或刪除重複內容,並將清洗後的文章內容釋出到新主題。最後的處理階段可能會嘗試向用戶推薦這些內容。這樣的管道建立實時基於各個主題資料流圖。從0.10.0.0版本開始,Apache Kafka提供了一個名為Kafka Streams的輕量級,但功能強大的流處理庫,可執行如上所述的資料處理。除了Kafka Streams之外,替代開源流處理工具還包括

Apache StormApache Samza

事件源

事件源是一種應用程式設計風格,其中狀態的改變作為事件序列被記錄下來。 Kafka對非常大的儲存日誌資料提供支援,使其成為以此風格構建的應用程式的一種優秀後端。

提交日誌

Kafka可以作為分散式系統的一種外部提交日誌。日誌有助於在節點間複製資料,並作為故障節點恢復其資料的重新同步機制。kafka日誌壓縮功能有助於這種使用場景。在這個場景中,Kafka類似於Apache BookKeeper