kafka log-compaction消费数据
kafka log-compaction consuming data
我正在阅读最新版本的 kafka 中的日志压缩,我很好奇这对消费者有何影响。消费者是否像以前一样工作,或者是否有获取所有最新值的新流程?
对于 'standard' Kafka 主题,我使用消费者组来维护指向最新值的指针。但是,如果 Kafka 基于键而不是时间来保存值,我想知道消费者群体将如何工作?
据我所知,当 Kafka 收到 'ack' 时,它会更新其 pointer/offset。因此,当它收到第 5 条消息的确认时(例如),它假定第 5 条和第 5 条消息之前的所有消息也已成功处理。同样,它会更新其偏移量。
This small application 描述了消费者分组的用法。
仅为被动日志段触发日志压缩。
当前写入数据的文件 -- 活动日志段。使用这些属性,'log.roll.ms'、'log.segment.bytes' - 可以将主动日志段滚动到被动日志段。
从主题中读取数据时,消费者应注意从活动日志段中获取键的最新值。
(例如)在活动日志段中,记录将存储为:
一种。 K1 - V1(加法)
b. K1 - V2(更新)
C。 K1 - NULL(删除)
您可以找到有关日志压缩工作原理的更多详细信息here。
它不会影响消费者的工作方式。如果您只对每个键的最新值感兴趣并阅读了整个主题,您可能仍会看到一个键 "duplicates"(如果不是所有重复项都被消除,或者在上次压缩后写入新消息 运行 ),因此您只关心每个键的最新值。
关于消费者组:当一个主题被压缩时,在有效偏移量范围内有"holes"。当您定期阅读某个主题时,您会自动跳过这些主题。
来自https://kafka.apache.org/documentation.html#design_compactionbasics
Note also that all offsets remain valid positions in the log, even if the message with that offset has been compacted away; in this case this position is indistinguishable from the next highest offset that does appear in the log. For example, in the picture above the offsets 36, 37, and 38 are all equivalent positions and a read beginning at any of these offsets would return a message set beginning with 38.
我正在阅读最新版本的 kafka 中的日志压缩,我很好奇这对消费者有何影响。消费者是否像以前一样工作,或者是否有获取所有最新值的新流程?
对于 'standard' Kafka 主题,我使用消费者组来维护指向最新值的指针。但是,如果 Kafka 基于键而不是时间来保存值,我想知道消费者群体将如何工作?
据我所知,当 Kafka 收到 'ack' 时,它会更新其 pointer/offset。因此,当它收到第 5 条消息的确认时(例如),它假定第 5 条和第 5 条消息之前的所有消息也已成功处理。同样,它会更新其偏移量。 This small application 描述了消费者分组的用法。
仅为被动日志段触发日志压缩。
当前写入数据的文件 -- 活动日志段。使用这些属性,'log.roll.ms'、'log.segment.bytes' - 可以将主动日志段滚动到被动日志段。
从主题中读取数据时,消费者应注意从活动日志段中获取键的最新值。
(例如)在活动日志段中,记录将存储为: 一种。 K1 - V1(加法) b. K1 - V2(更新) C。 K1 - NULL(删除)
您可以找到有关日志压缩工作原理的更多详细信息here。
它不会影响消费者的工作方式。如果您只对每个键的最新值感兴趣并阅读了整个主题,您可能仍会看到一个键 "duplicates"(如果不是所有重复项都被消除,或者在上次压缩后写入新消息 运行 ),因此您只关心每个键的最新值。
关于消费者组:当一个主题被压缩时,在有效偏移量范围内有"holes"。当您定期阅读某个主题时,您会自动跳过这些主题。
来自https://kafka.apache.org/documentation.html#design_compactionbasics
Note also that all offsets remain valid positions in the log, even if the message with that offset has been compacted away; in this case this position is indistinguishable from the next highest offset that does appear in the log. For example, in the picture above the offsets 36, 37, and 38 are all equivalent positions and a read beginning at any of these offsets would return a message set beginning with 38.