微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kafka Mirromaker2 生产者幂等和重复

如何解决Kafka Mirromaker2 生产者幂等和重复

我在 2 个集群(CL1、CL2)上设置了 mirrormaker2,镜像似乎正常工作,除了在以下场景中测试主题中存在重复问题:

当两个集群都启动并运行时,我模拟了一个事件,一个一个地停止了 CL2 集群的代理。停止前两个代理不会产生任何问题。我的测试主题的所有消息在 CL2 集群的 CL1.topic 上都没有问题。停止最后一个代理后,显然会在 CL2 端停止消息,因为所有代理都关闭了。在 CL1 主题的测试期间,总是有一个活跃的生产者提供消息。

问题始于重新启动代理。在启动第一个代理后,我注意到一些消息(大约 5%)是重复的。我已经在 CL1.topic 上连接了一个客户端,我可以确认我的镜像主题中确实有重复的消息。请建议我如何避免这些重复。代理关闭期间幂等性可能无法正常工作?

在下面你可以找到我的MM2相关配置

clusters = CL1,CL2
CL1.bootstrap.servers = broker1CL1:9092,broker2CL1:9092,broker3CL1:9092
CL2.bootstrap.servers = broker1CL2:9092,broker2CL2:9092,broker3CL2:9092

PRIM->DSTR.enabled = true
DSTR->PRIM.enabled = true

CL1.producer.enable.idempotence = true
CL1.producer.acks=all
CL1.producer.max.in.flight.requests.per.connection=5
CL1.producer.retries=2147483647
CL1.consumer.isolation.level=read_committed
CL2.producer.enable.idempotence = true
CL2.producer.acks=all
CL2.producer.max.in.flight.requests.per.connection=5
CL2.producer.retries=2147483647
CL2.consumer.isolation.level=read_committed

解决方法

此问题已在官方apache kafka mailing list上回复。

答案如下:Kafka 交付保证可以分为三组,包括“最多一次”、“至少一次”和“恰好一次”。默认情况下,当前的 MM 2.0 保证“至少”一次交付保证,这意味着在某些失败场景下会出现重复的消息。为了了解更多,我建议阅读此link

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。