Kafka EARLIEST 和 Kafka LATEST 偏移重置的效率如何?

How efficient are Kafka EARLIEST and Kafka LATEST offset resets?

问题

我正在考虑实施二进制搜索以找到基于时间的事件重放的起始偏移量。为此,我正在考虑使用 EARLIEST 来查找开始偏移量,并使用 LATEST 来查找最新偏移量。之后我可以实现二进制搜索来找到我需要从哪个偏移量开始重放。

问题

我想知道寻找 EARLIEST 和 LATEST 的效率如何以及它是如何实现的。他们是否只是简单地使用您主题目录中的 znode 时间戳并找到具有最新时间戳的文件来查看?那是我的猜测,但我只是向那里的黑暗射击。

提前致谢!

如果你使用的是Kafka 0.10版本,问题已经为你解决了。从 Kafka 0.10 开始,每条消息都可以包含时间戳,可用于精确搜索。 Kafka维护一个基于时间戳的索引,允许用户根据时间寻求偏移。

卡夫卡 0.10
您可以使用此方法 KafkaConsumer#offsetsForTimes

寻求通过给定时间戳进行偏移

Kafka 0.9 及更早版本
消息中没有时间戳。你不能准确地寻找,但你至少可以在给定的时间戳之前得到一个近似的偏移量。那么就需要使用KafkaSimpleAPI。我建议阅读此博客中有关此主题的更多信息 post 关于 A Closer Look at Kafka OffsetRequest