Сохранение того же смещения при переходе с Confluent Replicator на Apache Mirror Maker 2.0

#apache-kafka #apache-kafka-mirrormaker

#apache-kafka #apache-kafka-mirrormaker

Вопрос:

В настоящее время мы пытаемся перенести Confluent replicator на Apache с открытым исходным кодом Mirror Maker версии 2.0. Мы сталкиваемся с проблемой, когда сообщения, которые уже реплицируются replicator, снова реплицируются при запуске mirror Maker по той же теме. Этого не должно произойти, поскольку сообщения дублируются в целевом кластере. Вот более подробная информация:

  1. RCA: replicator назначает группу потребителей для репликации сообщений. Эта группа потребителей поддерживает смещение исходной темы. Но мы не можем назначить ту же группу потребителей конфигурации потребителя в mirror Maker 2.
  2. Mirror Maker 1.0: работа с той же группой потребителей может быть назначена в файле consumer.properties, и сообщения выбираются сразу после остановки репликатора.
  3. Пробовал запускать и настраивать source.cluster.consumer.group.id mirror Maker 2.0 во всех доступных вариантах (в режиме кластера, в режиме автономного подключения и в режиме распределенного подключения), но mirror maker 2.0 присваивает идентификатор группы потребителей как null при репликации сообщений.

Любые указатели, если кто-либо сделал то же самое и попытался сохранить то же смещение с помощью mirror Maker 2.0.

Ответ №1:

У нас есть грубый способ решить эту проблему. Ниже приведены шаги высокого уровня:

  • Прочитайте сообщение из внутреннего раздела Replicator для сохранения смещений. [подключение-смещения]
  • В этом разделе хранятся смещения для всех разделов, которые реплицируются в паре ключ: значение . Например,

Ключ: [«replicator-group»,{«тема»:»ТЕСТ», «раздел»: 0}]
Значение: {«смещение»:24}

  • Для каждой темы и раздела всякий раз, когда реплицируется новое сообщение, в теме connect-offsets создается новое сообщение с тем же ключом, но с увеличенным смещением.
  • Преобразуйте ключ этого сообщения в формат Mirror Maker 2 и создайте его во внутреннем разделе MirrorMaker2. [Вы можете изменить внутренние разделы в файле mirrormaker2-connect-distributed.properties] Формат внутренней темы mirror maker:

Ключ: [«mirrormaker-group»,{«кластер»:»», «раздел»: 0, «тема»:»ТЕСТ»}]
Значение: {«смещение»: 24}

  • После публикации сообщения, после перезапуска mirror Maker, он прочитает внутреннюю тему, чтобы получить последнее смещение той темы, для которой сообщение должно быть реплицировано, и таким образом мы можем гарантировать, что дублирующиеся сообщения не реплицируются.