Kafka日志清理實現(xiàn)詳細(xì)過程講解
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 無窮大 | 運行保留日志文件最大值 |
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í)行刪除操作。
基于大小刪除
- 計算需要刪除的日志大小的總和(當(dāng)前日志大小-所允許的日志文件最大值)
- 然后從第一個日志分段開始查找,查找可以進(jìn)行刪除的日志段集合
- 最后執(zhí)行刪除操作
基于日志文件起始偏移量
日志文件起始偏移量默認(rèn)等于第一個日志段的基準(zhǔn)偏移量,但隨著數(shù)據(jù)的刪除操作,該值也在不斷變化。
基于日志文件起始偏移量的判斷規(guī)則是,如果一個日志段的下一個日志段的起始偏移量如果小于日志文件起始偏移量,那么該日志段就可以被加入到刪除隊列,最后執(zhí)行刪除。
以上就是Kafka日志清理實現(xiàn)詳細(xì)過程講解的詳細(xì)內(nèi)容,更多關(guān)于Kafka日志清理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java實現(xiàn)6種字符串?dāng)?shù)組的排序(String array sort)
這篇文章主要介紹了java實現(xiàn)6種字符串?dāng)?shù)組的排序(String array sort),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01深入淺析SPI機(jī)制在JDK與Spring?Boot中的應(yīng)用
SPI是一種使軟件框架或庫更加模塊化、可擴(kuò)展和可維護(hù)的有效方法。通過遵循“開閉原則”,?SPI?確保了系統(tǒng)的穩(wěn)定性和靈活性,從而滿足了不斷變化的業(yè)務(wù)需求,這篇文章主要介紹了SPI機(jī)制在JDK與Spring?Boot中的應(yīng)用,需要的朋友可以參考下2023-09-09mybatis-plus 處理大數(shù)據(jù)插入太慢的解決
這篇文章主要介紹了mybatis-plus 處理大數(shù)據(jù)插入太慢的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Spring學(xué)習(xí)筆記之RestTemplate使用小結(jié)
這篇文章主要給大家介紹了關(guān)于Spring學(xué)習(xí)筆記之RestTemplate使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08如何使用Spring Boot ApplicationRunner解析命令行中的參數(shù)
這篇文章主要介紹了使用Spring Boot ApplicationRunner解析命令行中的參數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-12-12Spring MVC Mybatis多數(shù)據(jù)源的使用實例解析
項目需要從其他網(wǎng)站獲取數(shù)據(jù),因為是臨時加的需求,這篇文章主要介紹了Spring MVC Mybatis多數(shù)據(jù)源的使用實例解析,需要的朋友可以參考下2016-12-12