Kafka消息保留机制
运行机制生产者保存到broker中的消息,会保存在本地的logs/__consumer_offsets-xx/00000000000000000000.log文件中。默认情况,这些文件不会永久保留,当超过了保留时间或体积后,kafka会对这些文件进行删除。首先,根据log.retention条件判断,以segment为单位,判断该segment是否为可删除。如果满足条件,将其标记为可删除。并且在日
·
运行机制
生产者保存到broker中的消息,会保存在本地的logs/__consumer_offsets-xx/00000000000000000000.log文件中。
默认情况,这些文件不会永久保留,当超过了保留时间或体积后,kafka会对这些文件进行删除。
首先,根据log.retention条件判断,以segment为单位,判断该segment是否为可删除。
如果满足条件,将其标记为可删除。并且在日志文件cleaner-offset-checkpoint中记录当前清理到的位置。
由组件LogCleaner实现,将null写入该log文件中,这样该文件就被置空了。注:此处可再展开。
参数
log.retention.bytes
当文件大于该值后,会删除该文件
log.retention.hours
当保留时间超过该时间后,删除文件
The number of hours to keep a log file before deleting it (in hours), tertiary to log.retention.ms property
单位:小时
168(7天)
log.retention.minutes
当保留时间超过该时间后,删除文件。
log.retention.ms
当保留时间超过该时间后,删除文件。
log.retention.check.interval.ms
清理器检查日志符合被删除条件的轮询时间
单位是:毫秒
300000 (5 minutes)
log.segment.bytes=1024
#该值是每个日志片段的体积,如果超过该体积,就会新建一个日志。非本次实验重点。
参数间关系
时间参数优先级
ms>minutes>hours
当时间参数与空间参数都存在时,谁先满足,就执行谁。
例:
log.retentions.hours=168
log.retentions.bytes=1024
当文件体积达到1024后,即便没有超过168小时,也会删除该文件。
实验
log.retention.hours=168
log.retention.bytes=1024
log.segment.bytes=1024
log.retention.check.interval.ms=10000
分段体积超过了log.segment.bytes=1024,所以产生了新的日志
时间超过7天或者体积超过1024 ,检测到可被删除的段。
更多推荐
已为社区贡献12条内容
所有评论(0)