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