【问题标题】:Kafka - Compact and Time Based RetentionKafka - 紧凑和基于时间的保留
【发布时间】:2020-05-28 19:20:23
【问题描述】:

我尝试创建一个使用压缩和删除的 Kafka 主题配置,以实现以下目标:

  • 在保留期内,保留最新版本的密钥
  • 在保留期之后,任何早于时间戳的消息都将被删除

为此,我尝试了以下特定于主题的配置:

cleanup.policy=[compact,delete]
retention.ms=864000000 (10 days)
min.compaction.lag.ms=3600000 (1 hour)
min.cleanable.dirty.ratio=0.1
segment.ms=3600000 (1 hour)

代理配置如下:

log.retention.hours=7 days
log.segment.bytes=1.1gb
log.cleanup.policy=delete
delete.retention.ms=1 day

当我在测试中将其设置为较小的量时,例如20分钟,1小时等,我可以正确地看到数据在保留期后被修剪,仅在主题上调整retention.ms

我可以看到数据已按预期正确压缩,但在 10 天的保留期之后,如果我从头开始阅读该主题,超过 10 天的数据仍然存在。这么长的保留期有问题吗?

我在这里缺少任何配置吗?我检查了 kafka 日志,看到代理正在按预期滚动分段和压缩,但看不到任何有关删除的信息?

卡夫卡版本是 5.1.2-1

【问题讨论】:

  • 如果有帮助:Similar problem
  • @pratikmishra 我读到了,据我所知log.roll.hours 处于代理级别,segment.ms 应该涵盖主题级别?
  • 希望您对由于压缩为 delete.retention.ms 而创建的墓碑记录没有任何问题,如果未配置为 1 天。没有插入任何重复键的记录有问题吗?另外,您是否在保留时间 10 天后检查了更清洁的日志?
  • @Surendra 我检查了代理配置,delete.retention.ms1 day,我看到压缩记录的正确行为,例如对于具有相同密钥的消息,仅保留一个。对于 10 天内的消息,这些消息目前似乎被无限期保留。
  • 这个配置在集群上已经存在了大约 12 天,我预计它会在第 10 天最多删除数据,但似乎没有任何操作?我会在日志上搜索什么?

标签: apache-kafka


【解决方案1】:

您的主题和代理配置可能会相互覆盖,最终评估具有更高重要性的配置。

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 2010-12-09
    • 2019-11-26
    • 2015-10-17
    相关资源
    最近更新 更多