Kafka中offsets.retention.minutes和log.retention.minutes之間的區別


前言

在Kafka中,我們可能會發現兩個與retention相關的配置:

  • log.retention.minutes
  • offsets.retention.minutes

那么它們之前的差別是什么呢?

定義

首先讓我們看看它們在官方文檔中的定義

名稱 描述 類型 默認值 有效值 重要性
log.retention.minutes The number of minutes to keep a log file before deleting it (in minutes), secondary to log.retention.ms property. If not set, the value in log.retention.hours is used
在刪除日志文件之前保留日志文件的分鍾數(以分鍾為單位),優先級弱於 log.retention.ms。 如果未設置,則使用log.retention.hours中的值
int null
offsets.retention.minutes Log retention window in minutes for offsets topic
主題偏移量日志文的保留時長(分鍾)
int 1440 [1,...]

兩者的差別

log.retention.minutes設定的是消息日志的保留時長,而offsets.retention.minutes則是記錄topic的偏移量日志的保留時長。

偏移量是指向消費者已消耗的最新消息的指針。 比如,你消費了10條消息,那么偏移量將移動10個位置。 這個偏移量會被記錄到日志中,以便我們下次消費時知道應該從哪個offset開始繼續消費。
而offsets.retention.minutes允許我們將偏移量重置,即它會清除過期的記錄主題偏移量的日志,一旦記錄主題偏移量的日志被清楚,我們將不知道之前消費到具體哪個offset。這個設置並不會影響消息日志的保留時間。

比如我們將offsets.retention.minutes設為10,即十分鍾。然后最后一次主題A的消費偏移量是100,但是十分鍾內我們沒有繼續消費,該記錄主題A的消費偏移量100的日志將會被清除,也就是下次繼續消費主題A的消息時,我們不知道上一次消費哪里了(注意,主題A所存儲的消息依舊在broker上,並沒有被刪除), 在這種情況下,將會根據auto.offset.reset 的設置,讀取最早(smallest)/最晚(largest)的消息。

一般來說,記錄topic的偏移量日志的保留時長需要設置的比消息日志的保留時長更大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM