Копирование сообщений из одной темы Кафки в другую тему Кафки

Я хочу сделать поток из кластера Кафки / темы в кластере THR prod в другой кластер Кафки в среде разработки для тестирования масштабируемости и regrrssion.

для решения утиной ленты я каскадирую потребителя и производителя Кафки, но мой инстинкт говорит мне, что должен быть лучший способ. Но, я не мог найти никакого хорошего решения. Кто-нибудь может мне помочь?

3 ответов


если вы хотите реплицировать данные из одного кластера в другой, то есть один инструмент Кафки под названием MirrorMaker.

Kafka поставляется с инструментом для зеркального отображения данных между кластерами Kafka. Средство считывает из исходного кластера и записывает в целевой кластер. Данные будут считываться из разделов исходного кластера и записываться в раздел с тем же именем в целевом кластере.

вот синтаксис для запуска MirrorMaker инструмент:

bin/kafka-run-class.sh kafka.tools.MirrorMaker
       --consumer.config consumer.properties
       --producer.config producer.properties --whitelist my-topic

вы можете найти этот скрипт в каталоге установки kafka. Здесь вам нужно предоставить consumer.properties вашего source cluster и producer.properties вашего destination cluster. Вы можете белый список, какие темы должны быть отражены через .

вы можете найти более подробную информацию о зеркальное отображение данных между кластерами

Примечание: MirrorMaker копирует данные в тот же topic_name на destination cluster as source cluster


в то время как зеркало делает работы идеальными для решения кластера, однако, для того же кластера ваше решение ducktap не так плохо, как MirrorMaker предполагает, что вы тянете из одного кластера в другой кластер.

таким образом, решение, в котором вы просто хотите скопировать данные между различными темами в одном кластере, kafkacat-ваш друг.

export BOOTSTRAP_SERVERS=localhost:9096
export SOURCE_TOPIC=source_topic
export TARGET_TOPIC=target_topic

kafkacat -C -b $BOOTSTRAP_SERVERS -o beginning -e -t $SOURCE_TOPIC  | kafkacat -P -b $BOOTSTRAP_SERVERS  -t $TARGET_TOPIC

Кафка в основном очередь обмена сообщениями, поэтому он имеет пассивное поведение: что-то должно помещать сообщения на он (producer), и что-то должно тянуть сообщения С он (consumer).

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

в зависимости от вашего языка программирования, вы можете выбрать между некоторыми готовыми к работе хорошо документированными решениями производителя и/или потребителя.

для более сложных случаев вы можете проверить Апач Буря, etc.