Kafka提供了两种主要的日志清理策略:删除策略(delete)和压缩策略(compact)。这些策略可以通过配置参数进行设置,以适应不同的业务需求和系统环境。以下是详细的设置方法:
删除策略(Delete)
- 基于时间的保留策略:当日志段超过指定的保留时间后,Kafka会删除这些日志段。保留时间可以通过配置参数
log.retention.hours
、log.retention.minutes
或log.retention.ms
来设置,默认值为168小时(7天)。 - 基于日志大小的保留策略:当日志段的总大小超过配置的阈值时,Kafka会删除最早的日志段。大小限制可以通过配置参数
log.retention.bytes
来设置,默认值为无穷大(-1)。 - 基于日志起始偏移量的保留策略:这种策略较为少见,它是基于日志段的起始偏移量来决定哪些日志段可以被删除。
压缩策略(Compact)
- 工作原理:压缩策略主要用于仅保留每个键的最新消息版本,适用于更新频繁的场景,例如数据库变更日志。Kafka会定期扫描日志段,识别出需要压缩的段,并为每个日志段构建一个映射,记录每个键的最新偏移量。然后,Kafka会将这些消息写入新的日志段,并替换旧的日志段。
配置参数
log.cleanup.policy
:指定日志清理策略,可以是delete
或compact
,或者同时包含两者(delete,compact
)。log.retention.check.interval.ms
:日志删除任务的检查周期,默认5分钟。log.segment.bytes
:设置每个日志分段的大小,默认1GB。log.retention.bytes
:设置日志分区的最大数据量大小,默认无限制。log.retention.ms
:设置数据保留的时间,默认7天。
请注意,具体的配置参数可能会因Kafka版本的不同而有所差异,因此在实际应用中,还需要根据具体的业务需求和系统环境来调整相关参数。