4

我有一个部署,我们使用 kafka 从服务发送消息。但是我们需要在所有区域都拥有 Kafka 大师。因此,一旦消息被推送到 1 个数据中心,就应该在其他数据中心同步。当它再次在其他数据中心完成时,它应该被同步回来。Mirror Maker 可以提供从 1 到其他的同步,但我如何实现双向同步?

4

2 回答 2

5

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。

于 2016-08-19T07:07:02.127 回答
1

我怀疑 MirrorMaker 是单向的原因是为了避免同一事件的“循环”从站点 A 读取到站点 B,然后从 B 同步回 A。

如果您查看此博客文章(特别是“层和聚合”),一个解决方案是拥有“本地”和“聚合”主题,您可以使用 MM 从本地主题读取远程聚合主题

于 2016-08-18T16:06:43.387 回答