Копирование сообщений из одной темы Кафки в другую тему Кафки
Я хочу сделать поток из кластера Кафки / темы в кластере 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.