保持两个kafka集群同步的最佳方法是什么

Joe*_*ang 1 apache-kafka

我必须在两个不同的数据中心(DC)中设置两个kafka集群,这两个数据中心具有相同的主题和配置.原因是两个数据中心之间的连接很糟糕,我们无法创建全局数据中心.

我们让生产者和消费者发布和订阅每个DC的主题.

问题是我需要保持两个集群同步.让我们说:所有消息写入第一个DC应该最终复制到第二个,反过来.

我通过使用第一个消息并将消息发送到第二个消息来创建镜像来评估kafka MirrorMaker工具.但是,还需要将数据从第二个复制到第一个,因为在两个集群中允许写入数据.

我不认为Kafka MirrorMaker工具适合我们的情况.申请任何建议?

提前致谢.

Sön*_*bau 6

根据您的具体要求,您可以将MirrorMaker用于您的使用案例.

一个选项是只有两个单独的主题,让我们将它们称为集群1上的topic1和集群2上的topic2.所有生产线程都写入"本地"主题,并使用mirrormaker将此主题复制到远程集群.

对于您的消费者,您只需在最接近您的任何群集上订阅这两个主题,这样您就可以获得在任一群集上写入的所有记录.我创建了一个有希望帮助的插图:

在此输入图像描述

或者,您可以在两个群集上创建聚合主题,并使用MirrorMaker将数据复制到此主题中,这样您就可以将所有数据放在一个主题中以供使用.您可以通过这种方式在同一群集上拥有重复数据,但您可以通过输入主题上较低的保留设置来处理此问题.再次,希望以下图片有助于解释我的想法: 在此输入图像描述 为了实现这一点,您需要配置MirrorMaker以将主题复制到具有不同名称的主题中,这不是标准的事情,我已经写了一篇关于如何执行此操作的小博文,如果您想进一步调查此选项.