当Kafka清除信息时

svmlkihl  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(329)

我有一个apachekafka集群,保留策略为delete,保留期设置为24小时。然后,我动态地更改了保留期,并针对某个特定主题将其设置为1分钟。但是旧信息还在,所以我有几个问题:
保留的触发点是什么?我假设,虽然为消息设置了一些显式的生存时间,但不能保证消息会在这段时间之后被完全删除。那么这个过程是什么呢(在参考资料中找不到任何内容)
如果我在运行时更改保留期,旧消息将遵守它。据我所知,保留期是主题范围的属性,对于第一个保留期发布的消息也应该有效。

pxy2qtax

pxy2qtax1#

在每个代理上,分区被划分为段日志。默认情况下,段将存储1gb的数据(log.segment.bytes)。另外,默认情况下每7天推出一个新的日志段(log.roll.hours)
每个代理调度一个更干净的线程,负责定期检查哪些段可以删除。默认情况下,cleaner线程将每5分钟运行一次检查(这可以通过broker config:log.retention.check.interval.ms进行配置)
如果日志中的最新消息早于配置的保留期,则段是可移动的。此外,不能删除活动段日志(代理当前正在写入的日志)
为了能够尽快删除段日志,您应该配置与保留期相关的日志滚动。例如,如果将保留期配置为24小时,则将log.roll.hours配置为1小时可能是一个很好的id。
请注意,在每个代理上,段删除实际上可以在不同的时间发生,因为清理线程被安排在一起。
检查特定主题配置 kafka-configs 脚本:
例子: ./bin/kafka-configs --describe --zookeeper localhost:2181 --entity-type topics --entity-name __consumer_offsets

0g0grzrc

0g0grzrc2#

保留策略仅应用于已关闭的段。如果段仍处于活动状态,则在关闭并打开新段之前,不会清除该段中的数据。

相关问题