我有一个部署,我们使用kafka从服务发送消息。但我们需要在所有地区拥有卡夫卡大师。因此,一旦将消息推送到1个数据中心,就应该将消息同步到其他数据中心。当它再次在其他数据中心完成时,它应该同步回来。 Mirror Maker可以提供从1到另一个的同步,但是如何实现双向同步?
答案 0 :(得分:2)
Kafka中没有Master-Master类型的复制功能,Kafka MirrorMaker只能在一个方向上镜像。
为什么?
Kafka MirrorMaker基本上是生产者和消费者将事件从一个DC转移到另一个DC的组合,在此过程中,镜像主题的偏移量将与源群集中的偏移量不同。现在,如果我们想要双向必须跟踪一端产生的消息,这很难(不值得),而不会在所有消费者和生产者中调整太多。
在Kafka中无法运行make mirrormaker来进行master-master类型的复制,它只会以循环结束。
如果要实现您的要求,可能必须保留特定于数据中心的主题并将其聚合为主要主题。
假设您要从DC1和DC2向topicA生成消息。
DC1中有topicA-DC1,DC2中有topicA-DC2。并且在DC1和DC2中都有主题topicA。
您的mirromaker应该具有来自topicA-DC1和topicA-DC2的汇总消息,以及两个数据中心中的主题topicA。
答案 1 :(得分:1)
我怀疑MirrorMaker是单向的原因是避免"循环"将同一事件从站点A读入站点B,然后从B同步回A。
如果你看一下this blog post(特别是"层和聚合"),解决方案就是拥有" local"和"聚合"主题,您使用MM从本地主题读取到远程聚合主题