Kafka Consumer - выборка произвольного доступа диапазона разделов - PullRequest
0 голосов
/ 02 мая 2019

Вопрос: Как я могу случайно выбрать старый кусок сообщений с заданным диапазоном определения [раздел, начальное смещение, конечное смещение]. Надеемся, что диапазон от нескольких разделов одновременно (один диапазон для каждого раздела). Это необходимо поддерживать и в параллельной среде.

Мои идеи для решения до сих пор Я предполагаю, что могу использовать пул потребителей для параллелизма, и для каждой выборки используйте Consumer.seek и Consumer.poll с max.poll.records. Но это кажется неправильным. Не обещаю, что я получу точно такой же кусок, например, в случае, когда сообщение будет удалено (используя log compact). В целом этот метод поиска + опроса не выглядит подходящим для одноразовой случайной выборки.

Мой вариант использования: Как и обычный потребитель, мой читает 10 МБ фрагментов сообщений и обрабатывает их. Чтобы обработать этот кусок, я помещаю 3-20 заданий в разные темы, в какой-то рабочий процесс. Теперь моя цель состоит в том, чтобы не вставлять один и тот же кусок в другие темы снова и снова. Мне кажется, что лучше ссылаться на этот кусок. например Тема X / раздел Y, начальное смещение, конечное смещение. Затем при обработке заданий он снова получит точный кусок.

1 Ответ

1 голос
/ 02 мая 2019

Ваша идея кажется хорошей и является практически единственным решением с Consumer API. Там нет ничего, что вы можете сделать, как только сообщения удаляются между смещениями.

Если вам действительно необходимо каждое отдельное сообщение между каждым возможным диапазоном смещения, то вам следует рассмотреть возможность использования этих данных, поскольку они активно генерируются в некотором внешне индексируемом месте назначения, где сканирование смещения также является распространенной операцией. Существует множество коннекторов Kafka и множество баз данных или файловых систем. Но вывод здесь заключается в том, что, я думаю, вам, возможно, придется пересмотреть свои варианты для этих «операций по переработке»

...