kafka日志压缩消耗数据

kwvwclae  于 2021-06-08  发布在  Kafka
关注(0)|答案(3)|浏览(396)

我正在阅读kafka最新版本中关于日志压缩的内容,我很好奇这对消费者有何影响。消费者的工作方式是否与以往一样,或者是否有新的流程来获取所有最新的价值?
对于“标准”Kafka主题,我使用消费者组来维护指向最新值的指针。但是,如果Kafka的价值观是基于关键而不是基于时间,我想知道消费者群体将如何运作?

jaxagkaj

jaxagkaj1#

日志压缩仅对被动日志段触发。
当前写入数据的文件—活动日志段。使用这些属性,“log.roll.ms”、“log.segment.bytes”,可以将活动日志段滚动到被动日志段。
在从主题中读取数据时,使用者应注意从活动日志段获取密钥的最新值。
(例如)在活动日志段中,记录将存储为:a。k1-v1(附加)b。k1-v2(更新)c。k1-空(删除)
您可以在这里找到有关日志压缩工作原理的更多详细信息。

0qx6xfy6

0qx6xfy62#

据我所知,当kafka收到“ack”时,它会更新它的指针/偏移量。因此,当它接收到第5条消息的ack时(例如),它假设在第5条和第5条消息之前的所有消息都已成功处理。同样,它也会更新其偏移量。这个小应用程序描述了分组消费者的用法。

vaj7vani

vaj7vani3#

它不会影响消费者的工作方式。如果您只对每个键的最新值感兴趣并阅读了整个主题,那么您可能仍然会看到某个键的“重复项”(如果不是所有重复项都被消除,或者在上次压缩运行后写入了新消息),因此您只关心每个键的最新值。
关于消费者群体:当一个主题被压缩时,在有效偏移量的范围内会有“洞”。当你定期阅读某个主题时,你会自动跳过这些主题。
从https://kafka.apache.org/documentation.html#design_compactionbasics
还要注意,所有偏移量在日志中都保持有效位置,即使具有该偏移量的消息已被压缩掉;在这种情况下,此位置与日志中出现的下一个最高偏移量不可区分。例如,在上面的图片中,偏移36、37和38都是相等的位置,并且从这些偏移中的任何一个开始的读取将返回以38开始的消息集。

相关问题