kafka kafka主要元件說明

2021-10-04 18:29:51 字數 3537 閱讀 4856

producer主要是用於生產訊息,是kafka當中的訊息生產者,生產的訊息通過topic進行歸類,儲存到kafka的broker裡面去

kafka當中,topic是訊息的歸類,乙個topic可以有多個分割槽,每個分割槽儲存部分topic的資料,所有的partition當中的資料全部合併起來,就是乙個topic當中的所有的資料。

乙個broker服務下,是否可以建立多個分割槽?

可以與broker數與分割槽數沒有關係; 在kafka中,每乙個分割槽會有乙個編號:編號從0開始

每乙個分割槽的資料是有序的

說明-資料是有序 如何保證乙個主題下的資料是有序的?(生產是什麼樣的順序,那麼消費的時候也是什麼樣的順序)

topic的partition數量在建立topic時配置。

partition數量決定了每個consumer group中併發消費者的最大數量。

例如:consumer group a 有兩個消費者來讀取4個partition中資料;consumer group b有四個消費者來讀取4個 partition中的資料

kafka分割槽副本數(kafka partition replicas)

副本數(replication-factor):控制訊息儲存在幾個broker(伺服器)上,一般情況下小於等於broker的個數

例如:乙個broker服務下,是否可以建立多個副本因子?

不可以;建立主題時,副本因子應該小於等於可用的broker數。

副本因子過程圖

副本因子操作以分割槽為單位的。每個分割槽都有各自的主副本和從副本;主副本叫做leader,從副本叫做 follower(在有多個副本的情況下,kafka會為同乙個分割槽下的所有分割槽,設定角色關係:乙個leader和n個 follower),處於同步狀態的副本叫做in-sync-replicas(isr);

如果某乙個分割槽有三個副本因子,就算其中乙個掛掉,那麼只會剩下的兩個中,選擇乙個leader,但不會在其他的broker中,另啟動乙個副本(因為在另一台啟動的話,存在資料傳遞,只要在機器之間有資料傳遞,就會長時間占用網路io,kafka是乙個高吞吐量的訊息系統,這個情況不允許發生)所以不會在零個broker中啟動。
如果所有的副本都掛了,生產者如果生產資料到指定分割槽的話,將寫入不成功。 lsr表示:當前可用的副本

乙個partition當中有多個segment檔案組成,每個segment檔案,包含兩部分,乙個是.log檔案,另外乙個是.index檔案,其中.log檔案包含了我們傳送的資料儲存,.index檔案,記錄的是我們.log檔案的資料索引值,以便於我們加快資料的查詢速度

比如:索引檔案中3,497代表:資料檔案中的第三個message,它的偏移位址為497。再來看資料檔案中,message 368772表示:在全域性partiton中是第368772個message。

注:segment index file採取稀疏索引儲存方式,它減少索引檔案大小,通過mmap可以直接記憶體操作,稀疏索引為資料檔案的每個對應message設定乙個元資料指標,它比稠密索引節省了更多的儲存空間,但查詢起來需要消耗更多的時間。

任何發布到此partition的訊息都會被直接追加到log檔案的尾部,每條訊息在檔案中的位置稱為offset(偏移量)。

offset是乙個long型別數字,它唯一標識了一條訊息,消費者通過(offset,partition,topic)跟蹤記錄。

消費組: 由乙個或者多個消費者組成,同乙個組中的消費者對於同一條訊息只消費一次。

某乙個主題下的分割槽數,對於消費組來說,消費者應該小於等於該主題下的分割槽數。

如:某乙個主題有4個分割槽,那麼消費組中的消費者應該小於4,而且最好與分割槽數成整數倍1 2 4同乙個分割槽下的資料,在同一時刻,不能同乙個消費組的不同消費者消費

總結:分割槽數越多,同一時間可以有越多的消費者來進行消費,消費資料的速度就會越快,提高消費的效能

consumer是kafka當中的消費者,主要用於消費kafka當中的資料,任何乙個消費者都必定需要屬於某乙個消費組當中。

任意時刻,乙個分割槽當中的資料,只能被kafka當中同乙個消費組下面的乙個執行緒消費

生產者(producer):kafka當中的訊息生產者,生產的訊息通過topic進行歸類,儲存到kafka的broker裡面去

主題(topic): 乙個主題可以有零個,乙個或者多個消費者訂閱寫入的資料。可以有無數個主題。

分割槽(partition): 每乙個分割槽的資料是有序的,多個partition之間是無需的。partition數量決定了每個consumer group中併發消費者的最大數量。

分割槽和消費組之間的關係:同乙個組中的消費者對於同一條訊息只消費一次。

消費者應該小於等於該主題下的分割槽數.

partition = 消費任務的併發度=剛剛好,每個任務讀取乙個partition資料

partition >消費任務的併發度=有部分消費任務讀取多個分割槽的資料

partition < 消費任務的併發度=有部分消費任務空閒

任何時候,分割槽中的一條資料只能被乙個消費組中的乙個消費任務讀取。

總結:分割槽數越多,同一時間可以有越多的消費者來進行消費,消費資料的速度就會越快,提高消費的效能。

資料副本(replicas):資料副本數一般情況下小於等於broker的個數,

每個分割槽都有各自的主副本(在**複製的)和從副本(複製出來的)。

follower通過拉的方式從leader同步資料。

消費者和生產者都是從leader讀寫資料,不與follower互動。副本只用來提高集群的可靠性。

乙個分割槽有三個副本因子,乙個掛掉(主福本),不會在其他的broker中,另啟動乙個副本。丟失的副本不會恢復。

lsr表示:當前可用的副本列表

segment:乙個partition當中有多個segment,乙個segment由乙個是.log檔案和乙個.index檔案

偏移量(offset):每條訊息在檔案中的位置稱為offset(偏移量)

消費者(consumer):任何乙個消費者都必定需要屬於某乙個消費組當中。

Kafka Kafka主要設計目標及基本概念

kafka是基於訊息發布 訂閱模式實現的訊息系統,主要設計目標如下 基本概念 kafka集群包含乙個或多個伺服器,這些伺服器被稱為broker。邏輯上通rabbitmq的queue佇列相似,每條發布到kafka集群的訊息都必須有乙個topic。物理上不同topic的訊息分開儲存,邏輯上乙個topic...

Storm主要元件

首先扣一張最經典的,也是官網的首頁,就可以很好的解釋。storm中的spout元件就是圖中畫出的水龍頭,它就是資料來源,storm處理資料要完成實時資料處理首先需要有資料來源將資料輸入,那麼spout就是資料來源的功能。2.bolt storm中的bolt元件就是圖中的小水滴,它是資料流處理組鍵,資...

Android開發主要元件

一 activity 1.activity的宣告週期 2.activity元件的視窗物件和檢視物件與windowmanagerservice的關係 每乙個activity元件都有乙個關聯的window物件,用來描述乙個應用程式視窗。每乙個應用程式視窗內部又包含有乙個view物件,用來描述應用程式視窗...