Kafka 詳解(一)------簡介


  在前面幾篇博客我們介紹過一種消息中間件——RabbitMQ,本篇博客我們介紹另外一個消息中間件——Kafka,Kafka是由LinkedIn開發的,使用Scala編寫,是一種分布式,基於發布/訂閱的消息系統,在介紹 kafka 之前,我們首先需要知道為什么會誕生 kafka 。

1、kafka的誕生

  假設 A 公司有一個購物網站,隨着業務的擴大,網站的訪問量越來越大,為了維持網站的運營,部署系統的服務器也越來越多,A 公司的運維人員為了更好的維護系統,不得不經常查看日志,但是問題來了,業務規模的增大,日志也越來越多,總是到服務器上查看日志,總歸是不方便的,並且不光是運維人員,開發人員在解決問題時也需要查看日志,那么有沒有一個專門的平台來收集日志呢?然后大家都通過此平台查看日志,進而分析日志。於是便構建了一個日志分析平台。

  ①、日志分析平台

  

  通過此平台,大家都能利用該平台收集到的日志進行相應的后續操作了。但是新的需求又來了,為了更好的提高用戶的體驗度,增加用戶對網站的黏性,需要收集用戶對頁面的瀏覽、搜索等行為,然后根據這些信息給用戶推送精准的商品信息,於是,便又構建了一個用戶行為跟蹤平台。

  ②、用戶行為跟蹤平台

   

  以上只是兩個業務需求場景,后續如果還有新的業務需求,還會構建類似這樣的系統,當系統增多以后,會發現公司維護這些系統都得花費很大的精力,而且我們總結一下,類似這樣的系統,我們抽象一下,無非就是下圖的場景:

   

  我們把各種模塊產生的數據都收集起來放到一個平台中,然后相應的人員去該平台獲取相應的數據即可,該平台可以用來收集通用類型的數據,規模可以隨着公司的業務增長而增長。

  kafka 便是為了解決上述問題而設計的一款基於發布與訂閱的消息系統。

2、Kafka的體系架構

  

  ①、Kafka Broker : 一個獨立的kafka 服務器便是一個 Broker,多個 Broker 組成一個集群,Broker 接收來自生產者 Producer 的消息,為消費者 Consumer 提供服務。

  ②、Producer:消息生產者,向 Broker 提供消息。

  ③、Consumer:消息消費者,從 Broker 讀取消息。

  ④、Zookeeper:為集群分布式一致性提供服務,以及在早期kafka版本保存消息相關元數據。

  后面會對這四個模塊進行詳細介紹,這里大家先了解一下。

3、Kafka的優勢

  前面我們就介紹過一個消息隊列RabbitMQ,在這個家族中還有諸如 ActiveMQ,ZeroMQ,甚至Redis等,那么我們為什么要選擇 Kafka呢?

  ①、多個生產者

  kafka可以無縫的支持多個生產者,也就是它適合從多個消息生產系統收集數據,比如同時從前端系統,后端系統,數據庫,服務器等收集數據,並以統一的格式對外提供數據,數據消費者根據訂閱的消息隊列獲取相應的數據。

  ②、多個消費者

  除了支持多個生產者,kafka 也支持多個消費者,而且消費者之間互不影響,這與別的消息系統不同,別的消息系統消息一旦被一個消費者消費掉之后,別的消費者是無法在獲取的。

  ③、消息持久化

  kafka 中的消息可以根據設置保存到磁盤中,消費者由於處理速度慢或者流量高峰等無法及時處理消息,那么持久化數據可以保證數據不會丟失,以備消費者接着讀取。

  ④、伸縮性

  kafka 作為一個分布式消息系統,對在線集群做橫向擴展絲毫不影響整體系統的可用性。

  ⑤、高性能

  上面的一些特性,使得 kafka 成為了一個高性能的發布與訂閱消息系統,通過橫向擴展消費者、生產者和 broker,kafka 可以輕松處理巨大流量的消息流,並且在處理大量數據的同時,還能保證亞秒級的消息延遲。

參考文檔:

  官網:http://kafka.apache.org

  官網中文翻譯:http://kafka.apachecn.org/

  《Kafka 權威指南》

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM