Apache Kafka 4.0 MirrorMaker2消费者偏移量同步异常求助
Apache Kafka 4.0 MirrorMaker 2 消费者偏移量同步问题及解决方案问询
环境与部署配置
- 基于Apache Kafka 4.0 + MirrorMaker 2构建主集群(clusterA)到备集群(clusterB)的灾备链路,备集群仅在灾难恢复事件发生时才接入生产与消费流量
- 独立部署MirrorMaker 2节点
- 使用
IdentityReplicationPolicy(不重命名主题) - 正常运行状态下无客户端连接备集群
MirrorMaker 2 核心配置
# Cluster aliases clusters = clusterA, clusterB # Bootstrap servers clusterA.bootstrap.servers = serverA-kafka-1:9092 clusterB.bootstrap.servers = serverB-kafka-1:9092 # Replication policy replication.policy.class=org.apache.kafka.connect.mirror.IdentityReplicationPolicy # Offset/Checkpoint sync emit.checkpoints.enabled=true emit.checkpoints.interval.seconds=5 sync.group.offsets.enabled=true sync.group.offsets.interval.seconds=5 offset.lag.max=10 refresh.topics.interval.seconds=5
测试结果
- MirrorMaker运行时生产300条消息
- 预期:主题偏移量1分钟内完成同步
- 结果:✅ 测试通过
- MirrorMaker运行时消费100条消息后终止消费者
- 预期:消费者偏移量同步至clusterB
- 结果:❌ 测试失败——偏移量未同步
- 测试2后重启MirrorMaker
- 预期:消费者偏移量完成同步
- 结果:✅ 测试通过
- 重复测试2——MirrorMaker运行时消费100条消息后终止消费者
- 预期:消费者偏移量完成同步
- 结果:❌ 测试失败——偏移量未同步
- 测试4后重启MirrorMaker
- 预期:消费者偏移量完成同步
- 结果:❌ 测试失败——偏移量未同步
- 保持消费者运行状态下消费消息
- 预期:偏移量完成同步
- 结果:✅ 测试通过
问题现象总结
消费者偏移量仅能在以下场景完成同步:
- MirrorMaker重启且备集群中不存在该消费者偏移量(初始同步);
- 同步时消费者处于连接状态,或消费者已消费完主题所有消息(到达主题末尾)。
异常场景:若消费者在消费部分消息后立即退出(未消费完主题全量消息),已提交的偏移量永远无法同步至目标集群。
相关背景
该问题与Apache Kafka邮件列表中讨论的「MirrorCheckpointConnector无法复制最后一批偏移量」问题相符。
技术问询
是否可通过MirrorMaker 2或其他方案实现消费者偏移量的可靠同步?要求:即使消费者已退出或未消费至主题末尾,偏移量最终仍能完成同步。
内容的提问来源于stack exchange,提问作者Wee
相关产品推荐
相关产品推荐

