Kafka文件清除策略
基本概念
Kafka中==默认的日志保存时间为7天==,可以通过调整如下参数修改保存时间。
log.retention.hours:天,默认为7天,最低优先级log.retention.minutes:分钟log.retention.ms:毫秒,最高优先级log.retention.check.interval.ms:检查周期,默认5分钟
日志保存周期优先级:小时(hours) < 分钟(minutes) < 毫秒(ms)
==注意==:检查周期需要比默认保存时间小;
当日志查过了设置的时间,则进行清理,Kafka中提供的日志清理策略有==delete和compact==两种(默认为删除策略)。
delete(删除)策略
日志删除:将过期的数据删除
log.cleanup.policy=delete所有数据启用删除策略
删除策略有两种方案
- ==基于时间==:==默认打开==。==以segment中所有记录的最大时间戳作为该文件的时间戳。==
- ==基于大小==:==默认关闭==。超过设置的所有日志总大小,就删除最早的segment。
log.retention.bytes,默认等于 -1,表示无穷大。

最大时间戳没过期,这个文件就不算过期。
compact(压缩)策略
compact日志压缩:==对于相同key的不同value值,只保留最后一个版本。==
log.cleanup.policy=compact所有数据启用压缩策略

压缩后的offset可能是不连续的,比如上图压缩后的数据中没有Offset为6的消息,从这些offset消费消息时,将会拿到比这个offset大的offset对应的消息,就是说实际上会拿到offset为7的消息,并从7这个位置开始消费。
==注意==:这种策略==只适合特殊场景==,比如消息的key为用户ID,value是用户的资料,通过这种压缩策略,整个消息集里就保存了所有用户最新的资料。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果