Kafka 是什么?有什么應用場景?


1、kafka是什么?

Kafka是由LinkedIn開發的一個分布式基於發布/訂閱的消息系統,使用Scala編寫,它以可水平擴展和高吞吐率而被廣泛使用。

2、產生背景

Kafka是一個消息系統,用作LinkedIn的活動流(Activity Stream)和運營數據處理管道(Pipeline)的基礎。活動流數據是幾乎所有站點在對其網站使用情況做報表時都要用到的數據中最常規的部分。

活動數據包括頁面訪問量(Page View)、被查看內容方面的信息以及搜索情況等內容。這種數據通常的處理方式是先把各種活動以日志的形式寫入某種文件,然后周期性地對這些文件進行統計分析。

運營數據指的3是服務器的性能數據(CPU、IO使用率、請求時間、服務日志等等數據)。運營數據的統計方法種類繁多。

3、基本架構圖

4、基本概念解釋

1)Broker

Kafka集群包含一個或多個服務器,這種服務器被稱為broker。broker端不維護數據的消費狀態,提升了性能。直接使用磁盤進行存儲,線性讀寫,速度快:避免了數據在JVM內存和系統內存之間的復制,減少耗性能的創建對象和垃圾回收。

2)Producer

負責發布消息到Kafka broke

3)Consumer

消息消費者,向Kafka broker讀取消息的客戶端,consumer從broker拉取(pull)數據並進行處理。

4)Topic

每條發布到Kafka集群的消息都有一個類別,這個類別被稱為Topic。(物理上不同Topic的消息分開存儲,邏輯上一個Topic的消息雖然保存於一個或多個broker上但用戶只需指定消息的Topic即可生產或消費數據而不必關心數據存於何處)

5)Partition

Parition是物理上的概念,每個Topic包含一個或多個Partition.

6)Consumer Group

每個Consumer屬於一個特定的Consumer Group(可為每個Consumer指定group name,若不指定group name則屬於默認的group)

7)Topic & Partition

Topic在邏輯上可以被認為是一個queue,每條消費都必須指定它的Topic,可以簡單理解為必須指明把這條消息放進哪個queue里。為了使得Kafka的吞吐率可以線性提高,物理上把Topic分成一個或多個Partition,每個Partition在物理上對應一個文件夾,該文件夾下存儲這個Partition的所有消息和索引文件。

若創建topic1和topic2兩個topic,且分別有13個和19個分區,則整個集群上會相應會生成共32個文件夾(本文所用集群共8個節點,此處topic1和topic2 replication-factor均為1)。

5、適用場景

1、Messaging

對於一些常規的消息系統,kafka是個不錯的選擇;partitons/replication和容錯,可以使kafka具有良好的擴展性和性能優勢.不過到目前為止,我們應該很清楚認識到,kafka並沒有提供JMS中的"事務性""消息傳輸擔保(消息確認機制)""消息分組"等企業級特性;kafka只能使用作為"常規"的消息系統,在一定程度上,尚未確保消息的發送與接收絕對可靠(比如,消息重發,消息發送丟失等)

2、Website activity tracking

kafka可以作為"網站活性跟蹤"的最佳工具;可以將網頁/用戶操作等信息發送到kafka中.並實時監控,或者離線統計分析等

3、Metrics

Kafka通常被用於可操作的監控數據。這包括從分布式應用程序來的聚合統計用來生產集中的運營數據提要。

4、Log Aggregation

kafka的特性決定它非常適合作為"日志收集中心";application可以將操作日志"批量""異步"的發送到kafka集群中,而不是保存在本地或者DB中;kafka可以批量提交消息/壓縮消息等,這對producer端而言,幾乎感覺不到性能的開支.此時consumer端可以使hadoop等其他系統化的存儲和分析系統。

原文鏈接:https://blog.csdn.net/code52/article/details/50475511

版權聲明:本文為CSDN博主「寶哥-NO1」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

近期熱文推薦:

1.600+ 道 Java面試題及答案整理(2021最新版)

2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!

3.阿里 Mock 工具正式開源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式發布,全新顛覆性版本!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!


免責聲明!

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



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