Kafka 的日志保留期与数据清理策略是确保存储资源得到有效管理的关键机制。Kafka 通过日志段(Log Segment)的方式来管理存储数据,过期的数据或不再需要的数据可以被删除或压缩以释放磁盘空间。以下是与日志保留期及数据清理相关的主要策略:
日志保留期(Log Retention):
- 时间保留策略:
- 可以设置日志保留时间(如 7 天),超过该时间的数据会被自动删除。
- 通过
log.retention.hours(小时)、log.retention.minutes(分钟)或log.retention.ms(毫秒)来指定。
- 大小保留策略:
- 以每个分区为单位设置最大日志大小,当日志达到这个大小时,旧的数据会被删除。
- 使用
log.retention.bytes来指定每个分区的日志大小限制。
- 组合策略:
- 可以同时设置时间和大小限制,满足任一条件都会触发日志清理。
数据清理策略(Data Cleanup):
- 删除策略(Delete):
- 适用于消息不需要保留长期历史时,过期的数据会被直接删除以释放磁盘空间。
- 使用
log.cleanup.policy=delete来指定。
- 压缩策略(Compaction):
- 适用于需要保留最新版本的日志记录,Kafka 会定期压缩相同键的旧记录,仅保留最新版本。
- 使用
log.cleanup.policy=compact来指定。 - 常用于需要保留每个键最新状态的场景,如针对状态存储。
- 组合策略:
- 亦可同时设置删除和压缩策略,以兼顾不同的数据管理需求。
其他相关配置:
- 日志段大小:
segment.bytes,控制每个日志段的最大大小。 - 日志段时间:
segment.ms,控制 Kafka 何时滚动新的日志段。