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等其他系統化的存儲和分析系統

更多文章:點擊這裏

掃碼關注公衆號《後端開發ipoo》
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章