#apache-kafka #apache-kafka-mirrormaker
#apache-kafka #apache-kafka-mirrormaker
Вопрос:
В настоящее время мы пытаемся перенести Confluent replicator на Apache с открытым исходным кодом Mirror Maker версии 2.0. Мы сталкиваемся с проблемой, когда сообщения, которые уже реплицируются replicator, снова реплицируются при запуске mirror Maker по той же теме. Этого не должно произойти, поскольку сообщения дублируются в целевом кластере. Вот более подробная информация:
- RCA: replicator назначает группу потребителей для репликации сообщений. Эта группа потребителей поддерживает смещение исходной темы. Но мы не можем назначить ту же группу потребителей конфигурации потребителя в mirror Maker 2.
- Mirror Maker 1.0: работа с той же группой потребителей может быть назначена в файле consumer.properties, и сообщения выбираются сразу после остановки репликатора.
- Пробовал запускать и настраивать
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, он прочитает внутреннюю тему, чтобы получить последнее смещение той темы, для которой сообщение должно быть реплицировано, и таким образом мы можем гарантировать, что дублирующиеся сообщения не реплицируются.