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

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

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

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


person amiivas    schedule 26.11.2020    source источник


Ответы (1)


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

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

Ключ: [группа-репликатора, {тема: ТЕСТ, раздел: 0}]
Значение: {смещение: 24}

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

Ключ: [mirrormaker-group, {cluster:, partition: 0, topic: TEST}]
Значение: {offset: 24}

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