避免Kafka数据中心之间的重复数据处理

问题描述

在 active - active Kafka 设计中,当数据从 DC1 复制到 DC2(具有相同或不同区域)时。如何确保 DC2 消费者不处理 DC1 消费者已经处理过的数据?应该做什么Kafka级别的配置?

解决方法

消费者只知道本地偏移量主题,集群不知道它被复制到另一个集群中,因此代理中没有配置可以修改消费者相对于另一个集群的行为。

我假设您正在使用 MirrorMaker2,它具有 translate topic offsets using timestamp markers 的能力,辅助故障转移使用者可以从中获取,但这假设它仅在源 DC 发生故障后运行,而不是并行运行,在这种情况下,由于它是一个单独的主题,不同维护的消费者组等,你要么需要一个跨 DC 的分布式锁,要么找到一个地方来集中存储和管理两个消费者都会使用的偏移量