【发布时间】:2020-02-29 02:29:05
【问题描述】:
我想从生产集群中的 Kafka 集群/主题流到开发环境中的另一个 Kafka 集群,以进行可扩展性和回归测试。
对于鸭带解决方案,我级联了一个 Kafka 消费者和生产者,但我的直觉告诉我应该有更好的方法。但是,我还没有找到任何好的解决方案。谁能帮帮我?
【问题讨论】:
标签: apache-kafka
我想从生产集群中的 Kafka 集群/主题流到开发环境中的另一个 Kafka 集群,以进行可扩展性和回归测试。
对于鸭带解决方案,我级联了一个 Kafka 消费者和生产者,但我的直觉告诉我应该有更好的方法。但是,我还没有找到任何好的解决方案。谁能帮帮我?
【问题讨论】:
标签: apache-kafka
如果您想将数据从一个集群复制到另一个集群,那么有一个名为 MirrorMaker 的 kafka 工具。
Kafka 附带了一个用于在 Kafka 集群之间镜像数据的工具。该工具从源集群读取并写入目标集群。数据将从源集群中的主题读取并写入目标集群中的同名主题。
这是运行MirrorMaker工具的语法:
bin/kafka-run-class.sh kafka.tools.MirrorMaker
--consumer.config consumer.properties
--producer.config producer.properties --whitelist my-topic
你可以在 kafka 安装目录中找到这个脚本。在这里,您需要提供您的source cluster 的consumer.properties 和您的destination cluster 的producer.properties。您可以通过--whitelist 选项将应镜像的主题列入白名单。
你可以找到更多关于Mirroring data between clusters的信息
注意: MirrorMaker 将数据复制到与destination cluster 相同的topic_name 中,与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
【讨论】:
Kafka 基本上是一个消息队列,因此它具有被动行为:必须将消息放入它 (producer),并且必须从 提取消息> 它(consumer)。
如果你想在两个 kafka 主题之间建立一种管道,以便来自一个主题的消息会自动发送到另一个主题,你需要一些代码,它具有来自第一个主题的消费者属性和一个第二个话题的制作人。
根据您的编程语言,您可以选择一些现成的、有据可查的生产者和/或消费者解决方案。
对于更复杂的案例,您可以查看 Apache Storm 等。
【讨论】:
如果您需要将消息从一个主题复制到另一个主题,可能需要一些额外的逻辑或转换,您还可以使用 Kafka Streams。
https://docs.confluent.io/current/streams/index.html
例子
或者,检查MirrorMaker。
【讨论】: