kafka使用場景


Kafka應用場景

消息系統或是說消息隊列中間件是當前處理大數據一個非常重要的組件,用來解決應用解耦、異步通信、流量控制等問題,從而構建一個高效、靈活、消息同步和異步傳輸處理、存儲轉發、可伸縮和最終一致性的穩定系統。當前比較流行的消息中間件有Kafka、RocketMQ、RabbitMQ、ZeroMQ、ActiveMQ、MetaMQ、Redis等,這些消息中間件在性能及功能上各有所長。如何選擇一個消息中間件取決於我們的業務場景、系統運行環境、開發及運維人員對消息中件間掌握的情況等。我認為在下面這些場景中,Kafka是一個不錯的選擇。

(1)消息系統。Kafka作為一款優秀的消息系統,具有高吞吐量、內置的分區、備份冗余分布式等特點,為大規模消息處理提供了一種很好的解決方案。

(2)應用監控。利用Kafka采集應用程序和服務器健康相關的指標,如CPU占用率、IO、內存、連接數、TPS、QPS等,然后將指標信息進行處理,從而構建一個具有監控儀表盤、曲線圖等可視化監控系統。例如,很多公司采用Kafka與ELK(ElasticSearch、Logstash和Kibana)整合構建應用服務監控系統。

(3)網站用戶行為追蹤。為了更好地了解用戶行為、操作習慣,改善用戶體驗,進而對產品升級改進,將用戶操作軌跡、內容等信息發送到Kafka集群上,通過Hadoop、Spark或Strom等進行數據分析處理,生成相應的統計報告,為推薦系統推薦對象建模提供數據源,進而為每個用戶進行個性化推薦。

(4)流處理。需要將已收集的流數據提供給其他流式計算框架進行處理,用Kafka收集流數據是一個不錯的選擇,而且當前版本的Kafka提供了Kafka Streams支持對流數據的處理。

(5)持久性日志。Kafka可以為外部系統提供一種持久性日志的分布式系統。日志可以在多個節點間進行備份,Kafka為故障節點數據恢復提供了一種重新同步的機制。同時,Kafka很方便與HDFS和Flume進行整合,這樣就方便將Kafka采集的數據持久化到其他外部系統。

 

 

為什么要用kafka?kafka適用什么樣的場景?

使用kafka的理由:
1.分布式,高吞吐量,速度快(kafka是直接通過磁盤存儲,線性讀寫,速度快:避免了數據在JVM內存和系統內存之間的復制,減少耗性能的對象創建和垃圾回收)
2.同時支持實時和離線兩種解決方案(相信很多項目都有類似的需求,這也是Linkedin的官方架構,我們是一部分數據通過storm做實時計算處理,一部分到hadoop做離線分析)。
3.open source (open source 誰不喜歡呢)
4.源碼由scala編寫,可以運行在JVM上(筆者對scala很有好感,函數式語言一直都挺帥的,spark也是由scala寫的,看來以后有空得刷刷scala)
使用場景:
筆者主要是用來做日志分析系統,其實Linkedin也是這么用的,可能是因為kafka對可靠性要求不是特別高,除了日志,網站的一些瀏覽數據應該也適用。(只要原始數據不需要直接存DB的都可以)




免責聲明!

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



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