假设我有一个分区(partition-0),其中有4个段已提交,可以压缩。因此,所有这些段都不会有任何重复数据,因为压缩是在所有4个段上完成的。现在,有一个活动段仍未关闭。同时,如果使用者开始从分区0读取数据,它是否也从活动段读取消息?注意:我的目标是不向使用者提供特定密钥的重复数据。
nwo49xxi1#
您的担心是有效的,因为消费者也会阅读来自活动段的消息。日志压缩并不能保证一个特定键只有一个值,而是至少有一个值。以下是如何在文档中引入日志压缩:日志压缩确保kafka在单个主题分区的数据日志中始终至少保留每个消息键的最后一个已知值。但是,您可以尝试更频繁地运行压缩,以使活动和非兼容段尽可能小。然而,这是有代价的,因为运行压缩原木清理器会占用资源。主题级有很多配置与日志压缩相关。以下是最重要的信息,所有详细信息可在此处查看:删除.retention.ms最大压实滞后ms最小清洁率最小压实滞后ms段.字节然而,我很确信,你将无法保证你的消费者永远不会得到任何重复的日志压缩主题。
1条答案
按热度按时间nwo49xxi1#
您的担心是有效的,因为消费者也会阅读来自活动段的消息。日志压缩并不能保证一个特定键只有一个值,而是至少有一个值。
以下是如何在文档中引入日志压缩:
日志压缩确保kafka在单个主题分区的数据日志中始终至少保留每个消息键的最后一个已知值。
但是,您可以尝试更频繁地运行压缩,以使活动和非兼容段尽可能小。然而,这是有代价的,因为运行压缩原木清理器会占用资源。
主题级有很多配置与日志压缩相关。以下是最重要的信息,所有详细信息可在此处查看:
删除.retention.ms
最大压实滞后ms
最小清洁率
最小压实滞后ms
段.字节
然而,我很确信,你将无法保证你的消费者永远不会得到任何重复的日志压缩主题。