Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka Kafka-Mirromaker2生产者幂等性与复型_Apache Kafka_Idempotent_Apache Kafka Mirrormaker - Fatal编程技术网

Apache kafka Kafka-Mirromaker2生产者幂等性与复型

Apache kafka Kafka-Mirromaker2生产者幂等性与复型,apache-kafka,idempotent,apache-kafka-mirrormaker,Apache Kafka,Idempotent,Apache Kafka Mirrormaker,我已在两个集群(CL1、CL2)上设置了mirrormaker2,镜像似乎工作正常,但以下场景中的测试主题中存在重复问题: 当两个集群都启动并运行时,我模拟一个事件,逐个停止CL2集群的代理。停止前两个代理不会产生任何问题。我的测试主题的所有消息都在CL2集群的CL1.topic上镜像,没有问题。在停止最后一个代理之后,显然会停止CL2端的消息,因为所有代理都已关闭。在测试CL1主题期间,始终有一个活动的生产者提供消息 问题从重新启动代理开始。在启动第一个代理之后,我注意到一些消息(大约5%)是

我已在两个集群(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

这一问题已在官方网站上得到答复

答案如下:卡夫卡交付担保可分为三类,包括“最多一次”、“至少一次”和“恰好一次”。默认情况下,当前的MM 2.0保证“至少”一次交付保证,这意味着在某些故障场景下会有重复的消息。对于不了解的更多信息,我建议阅读本文