Kafka 的日志清理策略有哪些?

推荐答案

Kafka 的日志清理策略主要有两种:

  1. 日志删除(Log Deletion):根据时间或日志大小删除旧的日志段。
  2. 日志压缩(Log Compaction):保留每个键的最新值,删除旧的值。

本题详细解读

日志删除(Log Deletion)

日志删除策略是基于时间或日志大小来删除旧的日志段。Kafka 提供了以下配置参数来控制日志删除行为:

  • log.retention.hours:日志保留的最长时间,默认是 168 小时(7 天)。
  • log.retention.bytes:日志保留的最大字节数,默认是 -1,表示不限制。
  • log.segment.bytes:每个日志段的最大大小,默认是 1GB。
  • log.retention.check.interval.ms:日志保留检查的时间间隔,默认是 5 分钟。

当 Kafka 检测到日志段超过了配置的保留时间或大小限制时,会自动删除这些旧的日志段。

日志压缩(Log Compaction)

日志压缩策略是为了保留每个键的最新值,删除旧的值。这种策略适用于需要保留每个键的最新状态的场景,比如数据库变更日志。

Kafka 提供了以下配置参数来控制日志压缩行为:

  • log.cleaner.enable:是否启用日志压缩,默认是 true。
  • log.cleaner.threads:日志压缩线程数,默认是 1。
  • log.cleaner.dedupe.buffer.size:日志压缩去重缓冲区大小,默认是 128MB。
  • log.cleaner.io.buffer.size:日志压缩 I/O 缓冲区大小,默认是 512KB。
  • log.cleaner.io.max.bytes.per.second:日志压缩 I/O 最大字节数每秒,默认是 Double.MaxValue(无限制)。

日志压缩过程会扫描日志段,保留每个键的最新值,并删除旧的值。这样可以减少日志的存储空间,同时保留每个键的最新状态。

纠错
反馈