Kafka 日誌儲存原理

2021-10-04 15:37:43 字數 860 閱讀 2289

segment 檔案命名規則:partition 全域性的第乙個 segment從 0 開始,後續每個 segment 檔名為上乙個 segment檔案最後一條訊息的 offset 值進行遞增。數值最大為 64 位long 大小,20 位數字字元長度,沒有數字用 0 填充。如:

第乙個 log 檔案的最後乙個 offset 為:5376,下乙個segment 的檔案命名為:

00000000000000005376.log

00000000000000005376.index

00000000000000005376.timeindex

如果每個partition只有乙個資料檔案,在資料量較大的情況下查詢某個offset對應的資料時,由於是順序查詢,查詢效率就很低。那kafka是如何解決查詢效率低的問題呢?

index檔案中並沒有為資料檔案中的每條資料建立索引,而是採用了稀疏儲存的方式,每隔一定位元組的資料建立一條索引。這樣避免了索引檔案占用過多的空間,從而可以將索引檔案保留在記憶體中。但缺點是沒有建立索引的資料也不能一次定位到其在資料檔案的位置,從而需要做一次順序掃瞄,但是這次順序掃瞄的範圍就很小了。

kafka日誌儲存(五) LogSegment

為了防止log檔案過大,把log切分成很多個日誌檔案,每個日誌檔案對應乙個logsegment,在logsegment中封裝乙個filemessageset和offsetindex物件。class logsegment val log filemessageset,操作對應日誌檔案filemessa...

Kafka 日誌訊息儲存時間

分段策略屬性 屬性名含義 預設值log.roll.日誌滾動的週期時間,到達指定週期時間時,強制生成乙個新的segment 168 7day log.segment.bytes 每個segment的最大容量。到達指定容量時,將強制生成乙個新的segment 1g 1為不限制 log.retention...

kafka原理解析之 日誌管理

1 在磁碟的組織形式 從上圖可以看到segment的檔案組成 2 segment 日誌檔案達到一定的條件的時候需要進行切分,其對應的索引檔案也會進行切分,日誌檔案滿足以下條件之一就會進行切分。3 索引檔案 kafka中的索引檔案以稀疏索引的方式構造訊息的索引,它並不保證每個訊息在索引檔案中都有對應的...