将消息从一个Kafka主题复制到另一个Kafka主题

6qqygrtg  于 2021-06-07  发布在  Kafka
关注(0)|答案(4)|浏览(1247)

我想从thr prod cluster中的一个kafka集群/topic流到dev环境中的另一个kafka集群中,以进行可伸缩性和更新测试。
对于duck-tape解决方案,我将kafka的消费者和制作人串联起来,但我的直觉告诉我应该有更好的方法。但是,我还没有找到好的解决办法。有人能帮我吗?

bybem2ql

bybem2ql1#

如果您需要将消息从一个主题复制到另一个主题,可能需要一些额外的逻辑或转换,您也可以使用kafka流。
https://docs.confluent.io/current/streams/index.html
和例子
https://github.com/confluentinc/kafka-streams-examples/blob/5.4.0-post/src/main/java/io/confluent/examples/streams/wordcountlambdaexample.java
或者,检查 MirrorMaker .

dldeef67

dldeef672#

虽然mirror make非常适合跨集群解决方案,但是对于同一集群,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
q5iwbnjs

q5iwbnjs3#

如果您想将数据从一个集群复制到另一个集群,那么有一个kafka工具叫做 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 . 您可以将哪些主题镜像到白名单中 --whitelist 选项。
您可以找到有关在集群之间镜像数据的更多信息
注:mirrormaker将数据复制到 topic_namedestination cluster 作为 source cluster

ndasle7k

ndasle7k4#

kafka基本上是一个消息队列,因此它有一个被动行为:必须有东西将消息放入其中( producer ),必须有东西从中提取信息( consumer ).
如果你想在两个Kafka主题之间建立一个管道,这样一个主题的消息就会自动转到另一个主题,那么你需要一些代码,这些代码的属性是第一个主题的使用者和第二个主题的生产者。
根据您的编程语言,您可以选择一些现成的、有良好文档记录的生产者和/或消费者解决方案。
对于更复杂的情况,您可以查看apachestorm等。

相关问题