问题
我正在考虑实现二进制搜索以找到基于时间的事件重放的起始偏移量。为了做到这一点,我正在考虑使用EARLIEST来查找起始偏移量,并使用LATEST来查找最新偏移量。之后,我可以实现二进制搜索,以找到我需要开始重播的偏移量。
问题
我想知道如何有效地寻求EARLIEST和LATEST以及它是如何实现的。他们只是在主题目录中使用znode时间戳,并查找具有最新时间戳的文件来查看?那是我的猜测,但我只是在那里拍摄黑暗。
提前谢谢!
答案 0 :(得分:3)
如果您使用Kafka版本0.10问题已经为您解决了。由于Kafka 0.10每条消息都可以包含可用于准确搜索的时间戳。 Kafka维护一个基于时间戳的索引,允许用户根据时间寻求偏移。
Kafka 0.10
您可以使用此方法KafkaConsumer#offsetsForTimes
Kafka 0.9及更早版
消息中没有时间戳。您无法准确搜索,但在给定的时间戳之前,您至少可以得到一个近似的偏移量。然后,您需要使用Kafka 简单API 。我建议您在此博文中了解有关A Closer Look at Kafka OffsetRequest