如果我理解正确,cleanup.policy
的默认值是delete,这意味着当配置log.retention.hours
和log.retention.bytes
的保留时间或大小限制时,旧的段将被丢弃。
问:
在这种情况下,可以在日志中具有不同值的具有相同键的多个消息,这是正确的吗?具有null
值(Tombstones?)的消息会发生什么,这也是默认值?
如果是这样,如果我理解正确,那么这里是delete
清理策略,它定义了由delete.retention.ms
配置的每条记录保留,这既保证了最后一个键的存在,也将删除所有具有null
值的消息?
问:
-
如果是这样,即使
delete.retention.ms
配置为1ms
,我仍然可以看到null
值的消息吗? -
为了删除日志中的所有消息,我应该更改哪个配置?这可能吗?
-
retention.ms
和delete.retention.ms
是否以某种方式连接?如果有,采用哪一种保留政策以及如何保留?
谢谢!
这意味着旧的段将在其保留时间或大小限制时被丢弃
仅关闭段,是的(默认1GB大)。换句话说,500MB的段将在代理上保留比retention.ms
更长的时间。
[there]日志中可以有多个具有相同键值但值不同的消息
是的,可能有。所有具有相同键的消息都将在同一分区中结束,而null键的消息将放在不同的分区中(默认情况下)。
-
我想你是想问为什么你能看见?因为LogCleaner以线程间隔运行,并且只清理已关闭的段。消息不会在这一毫秒内从日志段中截断,特别是在具有TB级数据的集群上。
-
如果您想完全删除一个主题,而不必等待LogCleaner完成它的工作,那么使用适当的API调用来删除主题,而不是使用保留设置来清除主题
-
delete.retention.ms
是压缩的设置的话题。retention.ms
是cleaup.policy=delete
主题