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

时间:2017-02-06 05:45:59

标签: apache-kafka

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

我们正在让制作人和消费者发布和订阅每个DC的主题。

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

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

我不认为Kafka MirrorMaker工具适合我们的情况。 是否有任何建议?

提前致谢。

1 个答案:

答案 0 :(得分:6)

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

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

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

enter image description here

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