一、基礎架構
1、kafka中訊息是以topic進行分類的,生產者生產訊息,消費者消費訊息,都是面向topic的。
2、topic是邏輯上的概念,而partition是物理上的概念
3、每個partition對應於乙個log檔案,該log檔案中儲存的就是producer生產的資料
(log檔案的儲存位置是根據partition的leader副本在哪個broker上)
4、producer生產的資料會被不斷追加到該log檔案末端,且每條資料都有自己的offset(偏移量)。
以便出錯恢復時,從上次的位置繼續消費。
二、檔案儲存架構
1、為防止log檔案過大導致資料定位效率低下,kafka採取了分片和索引機制,
將每個partition分為多個segment。
2、segment的檔案生命週期由服務端配置引數(log.segment.bytes,log.roll.等引數)
決定。3、每個segment對應兩個檔案——「.index」檔案(segment索引檔案)
和「.log」檔案(segment資料檔案)。
4、命令規則:
partition全域性的第乙個segment從0開始,
後續每個segment檔名為上乙個segment檔案最後一條訊息的offset值(偏移量)
數值大小為64位,20位數字字元長度,沒有數字用0填充。
如果乙個消費者維護的offset是3,那麼它要繼續讀取資料,步驟如下:
1、先找到對應的「.index」檔案(segment索引檔案),index裡面存的是kv值,查詢key為3的值,
這個值是對應「.log」檔案(segment資料檔案)中message的物理偏移位址。
2、然後找到對應的「.log」檔案(segment資料檔案),按照物理偏移位址找到資料。
所以這樣分段儲存資料,首先就可以確定分段檔案縮小查詢範圍,然後再根據index檔案
中的offset查詢log檔案中的真實物理偏移位址,就可以快速的找到資料進行消費。
所以kafka資料的查詢速率與資料量是沒有關係的。
Kafka工作流程及檔案儲存機制
kafka 中訊息是以 topic 進行分類的,生產者生產訊息,消費者消費訊息,都是面向 topic的。topic 是邏輯上的概念,而 partition 是物理上的概念,每個 partition 對應於乙個 log 文 件,該 log 檔案中儲存的就是 producer 生產的資料。produce...
Kafka工作流程以及檔案儲存機制分析
kafka中訊息是以topic進行分類的,生產者生產訊息,消費者消費訊息,都是面向topic的。由於生產者生產的訊息會不斷追加到log檔案末尾,為防止log檔案過大導致資料定位效率低下,kafka採取了分片和索引機制,將每個partition分為多個segment。每個segment對應兩個檔案 i...
Kafka學習筆記(四)工作流程
1.生產者定期向主題傳送訊息。2.kafka 儲存為該特定主題配置的分割槽中的所有訊息。它確保訊息在分割槽之間平等共享。如果生產者傳送兩個訊息並且有兩個分割槽,kafka將在第一分區中儲存乙個訊息,在第二分割槽中儲存第二訊息。3.消費者訂閱特定主題。4.一旦消費者訂閱主題,kafka將向消費者提供主...