Kafka入門和高階

2021-10-06 15:21:27 字數 3081 閱讀 6861

kafka 是乙個分布式的基於 發布/訂閱模式 的流式平台,主要應用於大資料實時處理領域。

它有三個關鍵能力:

1.訂閱發布記錄流,它類似於企業中的訊息佇列 或 企業訊息傳遞系統

2.以容錯的方式儲存記錄流

3.實時記錄流

kafka 的應用

kafka 可以建立流資料管道,可靠性的在系統或應用之間獲取資料。

建立流式應用傳輸和響應資料。

kafka 作為訊息系統

kafka 作為訊息系統,它有三個基本元件

kafka 作為乙個高度可擴充套件可容錯的訊息系統,有很多 kafka 專屬的概念

topic(主題)

在 kafka 中,使用乙個類別屬性來劃分訊息的所屬類,劃分訊息的這個類稱為 topic。topic 相當於訊息的分配標籤,是乙個邏輯概念。主題好比是資料庫的表,或者檔案系統中的資料夾。

partition(分割槽)

topic 中的訊息被分割為乙個或多個的 partition,它是乙個物理概念,對應到系統上的就是乙個或若干個目錄,乙個分割槽就是乙個提交日誌。訊息以追加的形式寫入分割槽,先後以順序的方式讀取。

注意:由於乙個主題包含無數個分割槽,因此無法保證在整個 topic 中有序,但是單個 partition 分割槽可以

保證有序。訊息被迫加寫入每個分割槽的尾部。kafka 通過分割槽來實現資料冗餘和伸縮性

分割槽可以分布在不同的伺服器上,也就是說,乙個主題可以跨越多個伺服器,以此來提供比單個伺服器更強大的效能。

同乙個分割槽只能被同乙個組裡的消費者消費。

分割槽的原因:

方便在集群中擴充套件:提高某乙個topic的負載均衡,從而提高吞吐量。

提高併發

分割槽原則:

我們需要將producer傳送的資料封裝成乙個producerrecord物件。

指明partition 的情況下,直接將指明的值直接作為partiton 值;

沒有指明partition 值但有key的情況下,將key的hash 值與topic 的partition 數進行取餘得到partition 值;

既沒有partition 值又沒有key值的情況下,第一次呼叫時隨機生成乙個整數(後面每次呼叫在這個整數上自增),將這個值與topic 可用的partition總數取餘得到partition 值,也就是常說的round-robin 演算法。

segment(段)

kafka採取分片和索引機制,將 partition 進一步細分為若干個 segment,每個 segment 檔案的大小相等。每個segment對應兩個檔案:「.index」檔案和「.log」檔案。index檔案中儲存了索引和偏移量(offset),每一條資料的大小是固定的,log檔案儲存了具體的資料,會根據index中索引對應的偏移量找到log中對應的資料。

broker(伺服器)

kafka 集群包含乙個或多個伺服器,每個 kafka 中伺服器被稱為 broker,乙個broker可以容納多個topic。broker 接收來自生產者的訊息,為訊息設定偏移量,並提交訊息到磁碟儲存。broker 為消費者提供服務,對讀取分割槽的請求作出響應,返回已經提交到磁碟上的訊息。

broker 是集群的組成部分,每個集群中都會有乙個 broker 同時充當了集群控制器(leader)的角色,它是由集群中的活躍成員選舉出來的。每個集群中的成員都有可能充當 leader,leader 負責管理工作,包括將分割槽分配給 broker 和監控 broker。集群中,乙個分割槽總屬於乙個 leader,但是乙個分割槽可以分配給多個 broker(非leader),這時候會發生分割槽複製。這種複製的機制為分割槽提供了訊息冗餘,如果乙個 broker 失效,那麼其他活躍使用者會重新選舉乙個 leader 接管。

producer(生產者)

生產者,即訊息的發布者,其會將某 topic 的訊息發布到相應的 partition 中。生產者在預設情況下把訊息均衡地分布到主題的所有分割槽上,而並不關心特定訊息會被寫到哪個分割槽。不過,在某些情況下,生產者會把訊息直接寫到指定的分割槽。

consumer(消費者)

消費者,即訊息的使用者,乙個消費者可以消費多個 topic 的訊息,對於某乙個 topic 的訊息,其只會消費同乙個 partition 中的訊息。

consumer group (cg)(消費者組)

由多個consumer組成。消費者組內每個消費者負責消費不同分割槽的資料,乙個分割槽只能由乙個組內消費者消費;消費者組之間互不影響。所有的消費者都屬於某個消費者組,即消費者組是邏輯上的乙個訂閱者。

replica(副本)

為保證集群中的某個節點發生故障時,該節點上的partition資料不丟失,且kafka仍然能夠繼續工作,kafka提供了副本機制,乙個topic的每個分割槽都有若干個副本,乙個leader和若干個follower。副本數是乙個broker中leader和follower的總和。

消費者多於partition

即同乙個partition內的訊息只能被同乙個組中的乙個consumer消費。當消費者數量多於partition的數量時,多餘的消費者空閒。

消費者少於和等於partition

訊息在同乙個組之間的消費者之間均分

多個消費者組

多個組都會消費同乙個訊息,消費情況按組的情況分別處理

kafka目錄導讀(入門到高階)

kafka是分布式發布 訂閱訊息系統。它最初由linkedin公司開發,之後成為apache專案的一部分。kafka是乙個分布式的,可劃分的,冗餘備份的永續性的日誌服務。它主要用於處理活躍的流式資料。kafka主要特點 問題kafka的吞吐量測試 測試生產速度和消費速度 kafka記憶體為6g 不能...

kafka啟動命令 Kafka入門

kafka是乙個高效能分布式訊息系統,今天就簡單介紹下基礎入門吧。tar xzf kafka 2.12 2.2.0.tgz cd kafka 2.12 2.2.0二 啟動伺服器kafka使用zookeeper,所以我們要先啟動zookeeper,可以使用安裝檔案裡面的啟動命令啟動乙個單節點的zook...

kafka入門簡介

1 概述 kafka是linkedin於2010年12月份開源的訊息系統,它主要用於處理活躍的流式資料。活躍的流式資料在web 應用中非常常見,這些資料報括 的pv 使用者訪問了什麼內容,搜尋了什麼內容等。這些資料通常以日誌的形式記錄下來,然後每隔一段時間進行一次統計處理。2 設計目標 1 資料在磁...