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

8tntrjer  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(618)

我必须在两个不同的数据中心(dcs)中设置两个kafka集群,它们具有相同的主题和配置。原因是两个数据中心之间的连接很糟糕,我们无法创建一个全球数据中心。
我们有生产商和消费者发布和订阅每个dc的主题。
问题是我需要使两个集群保持同步。假设:所有写入第一个dc的消息最终都应复制到第二个dc,反之亦然。
我正在评估kafka mirrormaker工具,通过使用第一个镜像的消息并将消息处理到第二个镜像来创建镜像。但是,也需要将数据从第二个集群复制到第一个集群,因为在两个集群中都允许写入数据。
我不认为Kafka镜子制造工具适合我们的情况。有什么建议吗?
提前谢谢。

yi0zb3m4

yi0zb3m41#

根据您的具体需求,您可以将mirrormaker用于您的用例。
一种选择是只包含两个单独的主题,让我们将它们分别称为集群1上的topic1和集群2上的topic2。所有生产线程都写入“本地”主题,然后使用mirrormaker将该主题复制到远程集群。
对于您的消费者,您只需在离您最近的集群上订阅这两个主题,这样您就可以获得在任一集群上编写的所有记录。我制作了一个插图,希望能有所帮助:

或者,您可以在两个集群上创建聚合主题,并使用mirrormaker将数据复制到此主题中,这将使您能够在一个主题中使用所有数据。通过这种方式,可以在同一集群上复制数据,但可以通过降低输入主题的保留设置来解决这一问题。同样,希望下面的图片能帮助解释我的想法:

为了让它工作,您需要配置mirrormaker将一个主题复制到一个不同名称的主题中,这不是它的标准做法,如果您想进一步研究这个选项,我已经写了一篇关于如何做到这一点的小博文。

相关问题