**Kafka**跨区域数据中心双向同步



我有一个部署,我们使用kafka从服务发送消息。但我们需要在所有地区都有卡夫卡大师。因此,一旦消息被推送到一个数据中心,它应该在其他数据中心同步。当它在其他数据中心再次完成时,它应该同步回来。镜像制造商可以提供同步从一个到另一个,但我如何实现双向同步?

Kafka不支持Master-Master类型的复制,Kafka MirrorMaker只能单向镜像。

为什么?
Kafka MirrorMaker基本上是生产者和消费者将事件从一个DC转移到另一个DC的组合,在这个过程中,镜像主题的偏移量将与源集群中的偏移量不同。现在,如果我们想要实现双向,就必须跟踪一端产生的消息,如果不对所有的消费者和生产者进行太多调整,这很难(不值得)。在Kafka中没有办法运行make mirrormaker来做master-master类型的复制,它只会在循环中结束。

如果您想要实现您的需求,您可能必须保留特定于数据中心的主题,并将它们聚合到一个主主题。

假设您希望从DC1和DC2生成到topicA的消息。

  • 在DC1中有topic -DC1,在DC2中有topic -DC2。并且在DC1和DC2两门课程中都有硕士课题topicA。

  • 您的镜像生成器应该将来自topicA- dc1和topicA- dc2的消息聚合到两个数据中心的主主题topicA。

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

如果你看了这篇博客文章(特别是"层和聚合"),一个解决方案是拥有"本地"one_answers"聚合"主题,其中你使用MM从本地主题读取到远程聚合主题

最新更新