Kafka的消息存储在磁盘中,为了控制磁盘占用空间,Kafka需要不断地对过去的一些消息进行清理工作。Kafka的每个分区都有很多的日志文件,这样也是为了方便进行日志的清理。在Kafka中,提供两种日志清理方式:
日志删除(Log Deletion):按照指定的策略直接删除不符合条件的日志。
日志压缩(Log Compaction):按照消息的key进行整合,有相同key的但有不同value值,只保留最后一个版本。
在Kafka的broker或topic配置中:
配置项 配置值 说明
log.cleaner.enable true(默认) 开启自动清理日志功能
log.cleanup.policy delete(默认) 删除日志
log.cleanup.policy compaction 压缩日志
log.cleanup.policy delete,compact 同时支持删除、压缩
5.1 日志删除
日志删除是以段(segment日志)为单位来进行定期清理的。
5.1.1 定时日志删除任务
Kafka日志管理器中会有一个专门的日志删除任务来定期检测和删除不符合保留条件的日志分段文件,这个周期可以通过broker端参数log.retention.check.interval.ms来配置,默认值为300,000,即5分钟。
5.1.2 日志分段的保留策略
当前日志分段的保留策略有3种:
- 基于时间的保留策略
- 基
本文详细介绍了Kafka中的数据清理机制,包括日志删除和日志压缩。日志删除按照时间、大小和起始偏移量的保留策略进行,而日志压缩通过整合相同key的消息,仅保留最新版本。Kafka提供了如log.retention.hours等配置参数来调整这些策略。日志压缩是另一种清理方式,用于保留key的最新更新,并在消费者状态恢复时发挥作用。
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



