0

ПроблемаНасколько эффективны сборы Kafka EARLIEST и Kafka LATEST?

Я думаю о реализации двоичного поиска, чтобы найти начальное смещение для воспроизведения на основе времени событий. Для этого я думал об использовании EARLIEST, чтобы найти начальное смещение и LATEST, чтобы найти последнее смещение. После этого я мог бы реализовать двоичный поиск, чтобы найти, какое смещение мне нужно начать переигрывать.

Вопрос

Мне было интересно, насколько эффективно стремится EARLIEST и Последняя и как она реализуется. Просто они просто используют временную метку znode в каталоге вашего раздела и находят файл с последней меткой времени? Это было бы моим догадком, но я просто стреляю в темноту.

Спасибо заранее!

ответ

3

Если вы используете Kafka версию 0.10, проблема уже решена для вас. Поскольку Kafka 0.10 каждое сообщение может содержать метку времени, которая может использоваться для точного поиска. Kafka поддерживает индекс, основанный на отметках времени, который позволяет пользователям стремиться к смещению в зависимости от времени.

Кафка 0,10
Вы можете обратиться к компенсировано данной временной метки с помощью этого метода KafkaConsumer#offsetsForTimes

Кафка 0,9 и ранее
Там нет временной метки в сообщениях. Вы не можете искать точно, но вы можете, по крайней мере, получить приблизительное смещение перед заданной меткой времени. Затем вам нужно использовать Kafka Простой API. Я рекомендую узнать больше об этой теме в этом блоге о A Closer Look at Kafka OffsetRequest

+0

Это помогает! Спасибо. На данный момент я, к сожалению, реализовал двоичный поиск, так как мы не в 0.10.0.1. Когда мы доберемся туда, я планирую использовать offsetsForTimes! – Niraj