在前面幾篇部落格我們介紹過一種訊息中介軟體——rabbitmq,本篇部落格我們介紹另外乙個訊息中介軟體——kafka,kafka是由linkedin開發的,使用scala編寫,是一種分布式,基於發布/訂閱的訊息系統,在介紹 kafka 之前,我們首先需要知道為什麼會誕生 kafka 。
假設 a 公司有乙個購物**,隨著業務的擴大,**的訪問量越來越大,為了維持**的運營,部署系統的伺服器也越來越多,a 公司的運維人員為了更好的維護系統,不得不經常檢視日誌,但是問題來了,業務規模的增大,日誌也越來越多,總是到伺服器上檢視日誌,總歸是不方便的,並且不光是運維人員,開發人員在解決問題時也需要檢視日誌,那麼有沒有乙個專門的平台來收集日誌呢?然後大家都通過此平台檢視日誌,進而分析日誌。於是便構建了乙個日誌分析平台。
①、日誌分析平台
通過此平台,大家都能利用該平台收集到的日誌進行相應的後續操作了。但是新的需求又來了,為了更好的提高使用者的體驗度,增加使用者對**的黏性,需要收集使用者對頁面的瀏覽、搜尋等行為,然後根據這些資訊給使用者推送精準的商品資訊,於是,便又構建了乙個使用者行為跟蹤平台。
②、使用者行為跟蹤平台
以上只是兩個業務需求場景,後續如果還有新的業務需求,還會構建類似這樣的系統,當系統增多以後,會發現公司維護這些系統都得花費很大的精力,而且我們總結一下,類似這樣的系統,我們抽象一下,無非就是下圖的場景:
我們把各種模組產生的資料都收集起來放到乙個平台中,然後相應的人員去該平台獲取相應的資料即可,該平台可以用來收集通用型別的資料,規模可以隨著公司的業務增長而增長。
kafka 便是為了解決上述問題而設計的一款基於發布與訂閱的訊息系統。
①、kafka broker : 乙個獨立的kafka 伺服器便是乙個 broker,多個 broker 組成乙個集群,broker 接收來自生產者 producer 的訊息,為消費者 consumer 提供服務。
②、producer:訊息生產者,向 broker 提供訊息。
③、consumer:訊息消費者,從 broker 讀取訊息。
後面會對這四個模組進行詳細介紹,這裡大家先了解一下。
前面我們就介紹過乙個訊息佇列rabbitmq,在這個家族中還有諸如 activemq,zeromq,甚至redis等,那麼我們為什麼要選擇 kafka呢?
①、多個生產者
kafka可以無縫的支援多個生產者,也就是它適合從多個訊息生產系統收集資料,比如同時從前端系統,後端系統,資料庫,伺服器等收集資料,並以統一的格式對外提供資料,資料消費者根據訂閱的訊息佇列獲取相應的資料。
②、多個消費者
除了支援多個生產者,kafka 也支援多個消費者,而且消費者之間互不影響,這與別的訊息系統不同,別的訊息系統訊息一旦被乙個消費者消費掉之後,別的消費者是無法在獲取的。
③、訊息持久化
kafka 中的訊息可以根據設定儲存到磁碟中,消費者由於處理速度慢或者流量高峰等無法及時處理訊息,那麼持久化資料可以保證資料不會丟失,以備消費者接著讀取。
④、伸縮性
⑤、高效能
上面的一些特性,使得 kafka 成為了乙個高效能的發布與訂閱訊息系統,通過橫向擴充套件消費者、生產者和 broker,kafka 可以輕鬆處理巨大流量的訊息流,並且在處理大量資料的同時,還能保證亞秒級的訊息延遲。
官網:官網中文翻譯:
《kafka 權威指南》
kafka詳解一 Kafka簡介
分類 kafka 2014 08 18 10 45 375人閱讀收藏 舉報 背景 當今社會各種應用系統諸如商業 社交 搜尋 瀏覽等像資訊工廠一樣不斷的生產出各種資訊,在大資料時代,我們面臨如下幾個挑戰 如何收集這些巨大的資訊 如何分析它 如何及時做到如上兩點 以上幾個挑戰形成了乙個業務需求模型,即生...
Kafka(一)Kafka的簡介與架構
一 kafka中的術語解釋 生產者,上圖有兩個生產者,往同乙個往topic 主題 發訊息。2 topic 主題,這是乙個邏輯概念,就和資料庫表一樣,資料庫表可以存在於多個資料庫,同樣 傳送到topic的資料也會分散到不同的kafka節點上。3 partition 分割槽,乙個topic可以有多個分割...
kafka入門簡介
1 概述 kafka是linkedin於2010年12月份開源的訊息系統,它主要用於處理活躍的流式資料。活躍的流式資料在web 應用中非常常見,這些資料報括 的pv 使用者訪問了什麼內容,搜尋了什麼內容等。這些資料通常以日誌的形式記錄下來,然後每隔一段時間進行一次統計處理。2 設計目標 1 資料在磁...