gpt4 book ai didi

apache-kafka - 如果 offsets.retention.minutes=2 和 cleanup.policy=compact,kafka 会删除提交的偏移量或压缩它

转载 作者:行者123 更新时间:2023-12-04 07:48:28 50 4
gpt4 key购买 nike

我是 Kafka 的新手,但我知道 kafka 在 中存储消费者抵消__consumer_offsets 主题和 offsets.retention.minutes 定义在此时间之后消费者偏移量将被删除。但对我来说 __consumer_offsets 主题有 clean.policy=compact。当我描述时看到下面的结果 __consumer_offsets 话题:
主题:__consumer_offsets PartitionCount:50 ReplicationFactor:1 Configs:compression.type=producer,cleanup.policy=compact,segment.bytes=104857600
所以现在问题是在 2 分钟后 消费者偏移量会从主题中删除还是会以压缩形式存在于主题中?

最佳答案

(关于消费者偏移如何存储在 kafka 中的一些简要背景)
首先要知道的是,消费者的偏移量以以下消息格式存储在 __consumer_offsets 主题中。
键:值(近似格式)

(consumer-group, topic-name, parition) : (....offset,....commit-timestamp, expire-timestamp)


由于 __consumer_offset 是一个主题,没有规定更新现有记录,因此每次更新都作为新记录持久化。
(现在回到你的问题)
设置 offsets.retention.minutes=2 会将每个消费者的偏移量重置为 如果在这段时间内没有关于您的主题的活跃消费者。 它不会删除它只是将偏移量重置为 NULL .因此,现在您的 __consumer_offset 主题将更新为新记录,如下所示:

Key -> (consumer-group, topic-name, parition) : Value -> NULL


但同一个 Key 的旧记录仍然存在。但是,如果您的消费者现在通过重新启动再次活跃起来,它将在 __consumer_offsets 主题中看到无效的偏移量,因此要决定读取哪个偏移量,有一个消费者属性定义为“auto.offset.reset”,您可以将其设置为“根据您的应用程序逻辑,最早”或“最新”。
现在就这个主题的清理策略而言,它是“紧凑的”,它表示在主题的保留策略到期后,仅保留与键对应的最新记录,这是由属性日志确定的。集群级别的retention.min。因此,在保留策略过期后,只会留下每个消费者的最新提交偏移量,从而为您提供主题的压缩形式。

关于apache-kafka - 如果 offsets.retention.minutes=2 和 cleanup.policy=compact,kafka 会删除提交的偏移量或压缩它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67094394/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com