天天看點

Kafka3.0 Broker 檔案存儲檔案存儲機制檔案清理政策

文章目錄

  • 檔案存儲機制
  • 檔案清理政策

檔案存儲機制

1)Topic 資料的存儲機制

Kafka3.0 Broker 檔案存儲檔案存儲機制檔案清理政策

2)index 檔案和 log 檔案詳解

Kafka3.0 Broker 檔案存儲檔案存儲機制檔案清理政策

說明:日志存儲參數配置

參數 描述
log.segment.bytes Kafka 中 log 日志是分成一塊塊存儲的,此配置是指 log 日志劃分成塊的大小,預設值 1G。
log.index.interval.bytes 預設 4kb,kafka 裡面每當寫入了 4kb 大小的日志(.log),然後就往 index 檔案裡面記錄一個索引。 稀疏索引。

檔案清理政策

Kafka 中預設的日志儲存時間為 7 天,可以通過調整如下參數修改儲存時間。

  • log.retention.hours,最低優先級小時,預設 7 天。
  • log.retention.minutes,分鐘。
  • log.retention.ms,最高優先級毫秒。
  • log.retention.check.interval.ms,負責設定檢查周期,預設 5 分鐘。

    那麼日志一旦超過了設定的時間,怎麼處理呢?

Kafka 中提供的日志清理政策有 delete 和 compact 兩種。

1)delete 日志删除:将過期資料删除

  • log.cleanup.policy = delete 所有資料啟用删除政策

    (1)基于時間:預設打開。以 segment 中所有記錄中的最大時間戳作為該檔案時間戳。

    (2)基于大小:預設關閉。超過設定的所有日志總大小,删除最早的 segment。log.retention.bytes,預設等于-1,表示無窮大。

思考:如果一個 segment 中有一部分資料過期,一部分沒有過期,怎麼處理?

答案1:看所有資料是否超過7天,超過7天就删掉。不超過7天就保留,通俗就是不求同年同月同日生,但求同年同月同日四

答案2:看日志大小,如果超過設定的所有日志總大小,則删除,每超過,則保留

2)compact 日志壓縮

Kafka3.0 Broker 檔案存儲檔案存儲機制檔案清理政策

壓縮後的offset可能是不連續的,比如上圖中沒有6,當從這些offset消費消息時,将會拿到比這個offset大 的offset對應的消息,實際上會拿到offset為7的消息,并從這個位置開始消費。

這種政策隻适合特殊場景,比如消息的key是使用者ID,value是使用者的資料,通過這種壓縮政策,整個消息集裡就儲存了所有使用者最新的資料。