您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Kafka日志清理策略有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Kafka日志清理策略有哪些”這篇文章吧。
Kafka日志清理目前主要有兩種策略:
日志刪除
日志壓縮:日志壓縮就是根據(jù)key來保留最后一條消息。
Kafka提供log.cleanup.policy參數(shù)進(jìn)行相應(yīng)配置,默認(rèn)值:delete,還可以選擇compact。
配置 | 默認(rèn)值 | 說明 |
---|---|---|
log.retention.check.interval.ms | 300000 (5分鐘) | 檢測頻率 |
log.retention.hours | 168 (7天) | 日志保留時間小時 |
log.retention.minutes | 日志保留時間分鐘 | |
log.retention.ms | 日志保留時間毫秒 | |
file.delete.delay.ms | 60000 (1分鐘) | 延遲執(zhí)行刪除時間 |
log.retention.bytes | -1 無窮大 | 運(yùn)行保留日志文件最大值 |
log.retention.bytes | 1073741824 (1G) | 日志文件最大值 |
Kafka會根據(jù)檢測頻率周期性的檢測日志是否需要刪除,日志刪除策略主要有以下集中:
基于時間的刪除策略
基于文件大小的刪除策略
基于日志文件起始偏移量
Kafka會查找日志段的時間戳索引文件中的最后一條記錄,如果最后一條timestamp小于0,則取最近修改時間。
當(dāng)確認(rèn)完需要刪除的日志段以后,需要進(jìn)行以下刪除操作:
從日志對象中所維護(hù)日志分段的ConcurrentSkipListMap中移除待刪除的日志分段,保證沒有線程對這些日志分段進(jìn)行讀取操作。
為日志段中的所有文件加上.delete后綴
Kafka中會有一個命名為"delete-file"的延遲任務(wù)來刪除這些無效的日志數(shù)據(jù)
假如當(dāng)前日志段中也有需要刪除的數(shù)據(jù),那么kafka會先進(jìn)行分段,創(chuàng)建一個新的活躍日志段,然后執(zhí)行刪除操作。
計(jì)算需要刪除的日志大小的總和(當(dāng)前日志大小-所允許的日志文件最大值)
然后從第一個日志分段開始查找,查找可以進(jìn)行刪除的日志段集合
最后執(zhí)行刪除操作
日志文件起始偏移量默認(rèn)等于第一個日志段的基準(zhǔn)偏移量,但隨著數(shù)據(jù)的刪除操作,該值也在不斷變化。
基于日志文件起始偏移量的判斷規(guī)則是,如果一個日志段的下一個日志段的起始偏移量如果小于日志文件起始偏移量,那么該日志段就可以被加入到刪除隊(duì)列,最后執(zhí)行刪除。
以上是“Kafka日志清理策略有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。