0

问题

我正在考虑实现二进制搜索以找到基于时间的事件重放的起始偏移量。为了做到这一点,我正在考虑使用 EARLIEST 来查找开始偏移量和 LATEST 来查找最新偏移量。之后我可以实现二进制搜索来找到我需要开始重播的偏移量。

问题

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

先感谢您!

4

1 回答 1

3

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

Kafka 0.10
您可以使用此方法KafkaConsumer#offsetsForTimes寻求通过给定时间戳的偏移量

Kafka 0.9 及更早版本
消息中没有时间戳。你不能准确地寻找,但你至少可以在给定的时间戳之前得到一个近似的偏移量。然后你需要使用 Kafka Simple API我建议在这篇关于深入了解Kafka OffsetRequest 的博客文章中阅读有关此主题的更多信息

于 2016-11-13T22:16:57.457 回答