Kafka架構原理詳解

2021-10-09 16:19:33 字數 2229 閱讀 2679

kafka 儲存的訊息來自任意多被稱為 producer 生產者的程序。資料從而可以被發布到不同的 topic 主題下的不同 partition 分割槽。

在乙個分區內,這些訊息被索引並連同時間戳儲存在一起。其它被稱為 consumer 消費者的程序可以從分割槽訂閱訊息。

kafka 執行在乙個由一台或多台伺服器組成的集群上,並且分割槽可以跨集群結點分布。

producer: 訊息生產者,向 kafka broker 發訊息的客戶端。

consumer:訊息消費者,從 kafka broker 取訊息的客戶端。

consumer group:消費者組(cg),消費者組內每個消費者負責消費不同分割槽的資料,提高消費能力。乙個分割槽只能由組內乙個消費者消費,消費者組之間互不影響。所有的消費者都屬於某個消費者組,即消費者組是邏輯上的乙個訂閱者。

broker:一台 kafka 機器就是乙個 broker。乙個集群由多個 broker 組成。乙個 broker 可以容納多個 topic。

topic:可以理解為乙個佇列,topic 將訊息分類,生產者和消費者面向的是同乙個 topic。

partition:為了實現擴充套件性,提高併發能力,乙個非常大的 topic 可以分布到多個 broker (即伺服器)上,乙個 topic 可以分為多個 partition,每個 partition 是乙個 有序的佇列。

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

leader:每個分割槽多個副本的「主」副本,生產者傳送資料的物件,以及消費者消費資料的物件,都是 leader。

follower:每個分割槽多個副本的「從」副本,實時從 leader 中同步資料,保持和 leader 資料的同步。leader 發生故障時,某個 follower 還會成為新的 leader。

offset:消費者消費的位置資訊,監控資料消費到什麼位置,當消費者掛掉再重新恢復的時候,可以從消費位置繼續消費。

zookeeper:kafka 集群能夠正常工作,需要依賴於 zookeeper,zookeeper 幫助 kafka 儲存和管理集群資訊。

由於生產者生產的訊息會不斷追加到 log 檔案末尾,為防止 log 檔案過大導致資料定位效率低下,kafka 採取了分片和索引機制。

它將每個 partition 分為多個 segment,每個 segment 對應兩個檔案:「.index」 索引檔案和 「.log」 資料檔案。

這些檔案位於同一檔案下,該資料夾的命名規則為:topic 名-分割槽號。例如,first 這個 topic 有三分分割槽,則其對應的資料夾為 first-0,first-1,first-2。

方便在集群中擴充套件,每個 partition 可以通過調整以適應它所在的機器,而乙個 topic 又可以有多個 partition 組成,因此可以以 partition 為單位讀寫了。

可以提高併發,因此可以以 partition 為單位讀寫了。

分割槽原則:我們需要將 producer 傳送的資料封裝成乙個 producerrecord 物件。

該物件需要指定一些引數:

topic:string 型別,notnull。

partition:int 型別,可選。

timestamp:long 型別,可選。

key:string 型別,可選。

value:string 型別,可選。

headers:array 型別,nullable。

①指明 partition 的情況下,直接將給定的 value 作為 partition 的值。

②沒有指明 partition 但有 key 的情況下,將 key 的 hash 值與分割槽數取餘得到 partition 值。

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

Kafka架構原理

kafka是乙個分布式流式處理平台,具有三大主要功能 1 發布和訂閱訊息 2 高度容錯機制,訊息持久化儲存 3 實時訊息處理 kafka具有非常高的吞吐量,通常廣泛應用於兩大場景 1 做為系統或應用程式間的資料通道,進行資料傳輸 2 做為應用程式來進行實時資料處理 kafka提供了四大核心api 1...

Kafka學習(四) Kafka架構詳解

1 生產者 api 2 消費者 api 說明 kafka訊息保留在磁碟上,並在集群內複製以防止資料丟失 不能提高資料的讀取效率 consumer group 每乙個consumer屬於乙個特定的consumer group 可以為每個consumer指定 groupname broker kafka...

Kafka架構探險(三) Kafka引數詳解

kafka提供很多的引數 broker引數 topic引數 producer引數 consumer引數等,方便我們對kafka的效能做調整,本博文就來歸納總結下常見的引數 引數的說明是基於kafka 2.12 2.3.0版本 詳細可以參考官網 broker端的引數在kafka目錄下的config s...