如何解决Kafka使用者是否从分区中的活动段中读取消息?
让我们说我有一个分区(partition-0),其中包含4个已提交且可以压缩的段。因此,由于对所有4个段进行了压缩,因此所有这些段将没有任何重复数据。
现在,有一个活动段仍未关闭。同时,如果使用者开始从partition-0读取数据,它是否还会从活动网段读取消息?
注意:我的目标是不为特定密钥的使用者提供重复数据。
解决方法
您的顾虑是有效的,因为消费者还将读取活动细分中的消息。日志压缩不能保证您为特定密钥精确地 一个值,而是至少 一个。
以下是文档中引入日志压缩的方式:
日志压缩可确保Kafka始终为单个主题分区的数据日志中的每个消息键至少保留至少个已知值。
但是,您可以尝试更频繁地运行压缩,以使活动段和非压缩段尽可能小。但是,这是有代价的,因为运行压缩日志清理程序会占用资源。
主题级别上有许多与日志压缩相关的配置。这是最重要的,可以查看所有详细信息here:
- delete.retention.ms
- max.compaction.lag.ms
- min.cleanable.dirty.ratio
- min.compaction.lag.ms
- segment.bytes
但是,我非常相信,您将无法保证您的使用者永远不会得到与日志压缩主题有关的任何重复信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。