【问题标题】:**Kafka** Bi-directional sync between datacenter across regions**Kafka** 跨区域数据中心之间的双向同步
【发布时间】:2020-01-10 11:25:32
【问题描述】:

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

【问题讨论】:

    标签: apache-kafka confluent-platform


    【解决方案1】:

    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。

    【讨论】:

    • 感谢您的解释。我现在也认为应该在主从机上运行多个镜像制造商来维护相同的数据。
    【解决方案2】:

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

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

    【讨论】:

    • 提到的解决方案会起作用,但它会增加服务器的数量。假设我们必须限制运行 kafka 的服务器数量,有没有办法在数据中心上运行镜像和同步?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2022-11-09
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多