Kafka-爲何選擇kafka(kafka的優勢)

Kafka-爲何選擇kafka(kafka的優勢)前端

多個生產者

kafka能夠無縫的支持多個生產者,無論客戶端在使用單個主題仍是多個主題。因此它很適合用來從多個前端系統手機數據,並以同一的格式對外提供數據。數據庫

例如:一個包含了多個微服務的網站,能夠爲頁面視圖建立一個單獨的主題,全部服務都以相同的消息格式向該主題寫入數據。消費者應用程序會得到統一的頁面視圖,而無需協調來自不一樣生產者的數據流。後端

多個消費者

kafka支持多個消費者從一個單獨的消息流上讀取數據,並且消費者之間互不影響。這與其餘隊列系統不一樣,其餘隊列系統的消息一旦被一個客戶端讀取,其餘客戶端就沒法再讀取它。安全

另外,多個消費者能夠組成一個羣組,它們共享一個消息流,並保證整個羣組對每一個給定的消息只處理一次。機器學習

基於磁盤的數據存儲

kafka容許消費者非實時地讀取消息,這要歸功於kafka的數據保留特性。微服務

消息被提交到磁盤,根據設置的保留規則進行保存。每一個主題能夠設置單獨的保留規則,以便知足不一樣消費者的需求,各個主題能夠保留不一樣數量的消息。oop

消費者可能會由於處理速度慢或突發的流量高峯致使沒法及時讀取消息,而持久化數據能夠保證數據不會丟失。性能

消費者能夠被關閉,但消息會繼續保留在kafka裏。消費者能夠從上次中斷的地方繼續處理消息。學習

伸縮性

爲了可以處理大量數據,kafka從一開始就被設計成一個具備靈活伸縮性的系統。網站

用戶在開發階段能夠額先使用單個broker,再擴展到包含三個broker的小型開發集羣,而後隨着數據量不斷增加,部署到生產環境的集羣可能包含上百個broker。對在線集羣進行擴展,絲絕不影響總體系統的可用性。一個包含多個broker的集羣,即便個別broker失效,仍然能夠持續地爲客戶提供服務。要提升集羣的容錯能力,須要配置較高的複製係數。

高性能

經過橫向擴展生產者、消費者和brokerkafka能夠輕鬆處理巨大的消息流。在處理大量數據的同時,它還能保證亞秒級的消息延遲。

 

使用場景

1.活動追蹤

kafka最初的使用場景是跟蹤用戶的活動。網站用戶與前端應用程序發生交互,前端應用程序生成用戶活動相關的消息。這些消息能夠是一些靜態的信息,好比頁面訪問次數和點擊量,也能夠是一些複雜的操做,好比添加用戶資料。這些消息被髮布到一個或多個主題上,由後端應用程序負責讀取。這樣,咱們就能夠生成報告,爲機器學習系統提供數據,更新搜索結果,或者實現其餘更多功能。

2.傳遞消息

kafka的另外一個基本用途是傳遞消息。應用程序向用戶發送通知就是經過傳遞消息來實現的。

這些應用程序組件能夠生成消息,而不須要關心消息的格式,也不須要關心消息時如何被髮送的。一個公共應用程序會讀取這些消息,對它們進行處理:

格式化消息

將多個消息放在同一個通知裏發送

根據用戶配資的首選項來發送數據

使用公共組件的好處在於,不須要在多個應用程序上開發重複的功能,並且能夠再公共組件上作一些有趣的轉換,好比把多個消息聚合成一個單獨的通知,而這些工做是沒法在其它地方完成的。

3.度量指標和日誌記錄

kafka也能夠用於收集應用程序和系統度量指標以及日誌。

應用程序按期把度量指標發佈到kafka主題上,監控系統或告警系統讀取這些消息。

kafka也能夠用在像Hadoop這樣的離線系統上,進行較長時間片斷的數據分析,好比年度增加走勢預測。

日誌消息也能夠被髮布到kafka主題上,而後被路由到專門的日誌搜索系統(好比ES)或安全分析應用程序。更改目標系統不會影響到前端應用或聚合方法。

4.提交日誌

kafka的基本概念來源於提交日誌,因此使用kafka做爲提交日誌是件瓜熟蒂落的事。咱們能夠把數據庫的更新發布到kafka上,應用程序經過監控事件流來接收數據庫的實時更新。這種變動日誌流也能夠用於把數據庫的更新複製到遠程系統上,或者合併多個應用程序的更新到一個單獨的數據庫視圖上。數據持久化爲變動日誌提供了緩衝區,若是消費者應用程序發生故障,能夠經過重放這些日誌來恢復系統狀態。

緊湊型日誌主題只爲每一個鍵保留一個變動數據,因此能夠長時間使用,不須要擔憂消息過時問題。

5.流處理

流處理是有一個能提供多種類型應用程序的領域。操做的是實時數據流,較小的時間片斷,而Hadoop處理更長時間片斷的數據,多是幾個小時或者幾天,Hadoop會對這些數據進行批處理。

相關文章
相關標籤/搜索