Kafka配置offsets.retention.minutes和log.retention.minutes的区别
前言
在Kafka中,我們可能會發(fā)現(xiàn)兩個與retention相關(guān)的配置:
- 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 在刪除日志文件之前保留日志文件的分鐘數(shù)(以分鐘為單位),優(yōu)先級弱于?log.retention.ms。 如果未設(shè)置,則使用log.retention.hours中的值 | int | null | ? | 高 |
| offsets.retention.minutes | Log retention window in minutes for offsets topic 主題偏移量日志文的保留時長(分鐘) | int | 1440 | [1,...] | 高 |
兩者的差別
log.retention.minutes設(shè)定的是消息日志的保留時長,而offsets.retention.minutes則是記錄topic的偏移量日志的保留時長。
偏移量是指向消費(fèi)者已消耗的最新消息的指針。 比如,你消費(fèi)了10條消息,那么偏移量將移動10個位置。 這個偏移量會被記錄到日志中,以便我們下次消費(fèi)時知道應(yīng)該從哪個offset開始繼續(xù)消費(fèi)。
而offsets.retention.minutes允許我們將偏移量重置,即它會清除過期的記錄主題偏移量的日志,一旦記錄主題偏移量的日志被清楚,我們將不知道之前消費(fèi)到具體哪個offset。這個設(shè)置并不會影響消息日志的保留時間。
比如我們將offsets.retention.minutes設(shè)為10,即十分鐘。然后最后一次主題A的消費(fèi)偏移量是100,十分鐘內(nèi)繼續(xù)消費(fèi),講會從101開始繼續(xù)消費(fèi),但是十分鐘內(nèi)我們沒有繼續(xù)消費(fèi),該記錄主題A的消費(fèi)偏移量100的日志將會被清除,也就是下次繼續(xù)消費(fèi)主題A的消息時,我們不知道上一次消費(fèi)哪里了(注意,主題A所存儲的消息依舊在broker上,并沒有被刪除), 在這種情況下,將會根據(jù)auto.offset.reset?的設(shè)置,讀取最早(smallest)/最晚(largest)的消息。
一般來說,記錄topic的偏移量日志的保留時長需要設(shè)置的比消息日志的保留時長更大。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Kafka配置offsets.retention.minutes和log.retention.minutes的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摸透 Redis 主从复制、哨兵、Clu
- 下一篇: Kafka调优