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
Java Kafka在使用相同拓扑进行滚动更新期间流错误状态_Java_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Java Kafka在使用相同拓扑进行滚动更新期间流错误状态

Java Kafka在使用相同拓扑进行滚动更新期间流错误状态,java,apache-kafka,apache-kafka-streams,Java,Apache Kafka,Apache Kafka Streams,我遇到了这种奇怪的行为:在应用程序滚动更新(3个节点)期间,金丝雀吊舱失败了,因为所有的卡夫卡流都死掉了。更有趣的是,调查显示根本原因是: org.apache.kafka.streams.processor.internals.StreamThread - java.lang.IllegalStateException: Consumer was assigned partitions [my-service-KSTREAM-FILTER-0000000006-repartition-0,

我遇到了这种奇怪的行为:在应用程序滚动更新(3个节点)期间,金丝雀吊舱失败了,因为所有的卡夫卡流都死掉了。更有趣的是,调查显示根本原因是:

org.apache.kafka.streams.processor.internals.StreamThread - 
java.lang.IllegalStateException: Consumer was assigned partitions [my-service-KSTREAM-FILTER-0000000006-repartition-0, my-service-KSTREAM-MAP-0000000002-repartition-0] 
which didn't correspond to subscription request [first_topic, second_topic, third_topic]
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.handleAssignmentMismatch(ConsumerCoordinator.java:218)
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.onJoinComplete(ConsumerCoordinator.java:264)
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.joinGroupIfNeeded(AbstractCoordinator.java:424)
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureActiveGroup(AbstractCoordinator.java:358)
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:353)
    at org.apache.kafka.clients.consumer.KafkaConsumer.updateAssignmentMetadataIfNeeded(KafkaConsumer.java:1251)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1216)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1201)
    at org.apache.kafka.streams.processor.internals.StreamThread.pollRequests(StreamThread.java:941)
    at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:846)
    at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:805)
    at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:774)
这些重新分区主题是运行拓扑的现有内部主题。好吧,但为什么失败了

日志中还有一条线索:

INFO org.apache.kafka.clients.consumer.KafkaConsumer - [Consumer 
clientId=my-service-f4d2b970-4a28-4221-b64f-5440c837203c-StreamThread-1-consumer, 
groupId=my-service] 
Subscribed to pattern: 'my-service-KSTREAM-FILTER-0000000012-repartition|my-service-KSTREAM-MAP-0000000011-repartition|
first_topic|second_topic|third_topic'
它显示Kafka Streams创建了不同的内部主题(不同的名称)并将其用作订阅模式。 只有在拓扑发生更改时才有可能:重新组织操作会导致内部主题重命名(如果不存在名称覆盖)。 在我的情况下,不存在与拓扑相关的更改。甚至还有相同的依赖版本

那么,在这种情况下,什么会引发内部话题的更名呢

注释

  • 卡夫卡流库版本=2.3.0
  • 主题复制因子=3
  • 主题分区=2

你能展示你的代码吗?很遗憾,我不能展示源代码。但我可以向您展示拓扑或配置。主要的一点是,像这样的滚动更新在很多时候都是成功的好吧,属性会很有用。无论如何,如果您没有更改拓扑,则不应更改任何内部主题,但是使用应用程序重置工具清理内部主题也不会有任何影响清理内部主题会导致大量数据丢失。让我们假设该服务正在生产中,并处理大量数据。之后,您将根据该数据计算分析。重置工具或只是更改clientId(更改拓扑)意味着您将丢失重要数据。我在问如何安全地处理这个问题。此外,为什么会发生这种情况?我们的输入源没有被删除,为什么会有损失?理想情况下,您的管道应该是幂等的,这样内部的、中间的主题就可以从某个真理来源重建。(假设输入主题的保留未删除数据本身)请显示您的代码好吗?很遗憾,我无法显示源代码。但我可以向您展示拓扑或配置。主要的一点是,像这样的滚动更新在很多时候都是成功的好吧,属性会很有用。无论如何,如果您没有更改拓扑,则不应更改任何内部主题,但是使用应用程序重置工具清理内部主题也不会有任何影响清理内部主题会导致大量数据丢失。让我们假设该服务正在生产中,并处理大量数据。之后,您将根据该数据计算分析。重置工具或只是更改clientId(更改拓扑)意味着您将丢失重要数据。我在问如何安全地处理这个问题。此外,为什么会发生这种情况?我们的输入源没有被删除,为什么会有损失?理想情况下,您的管道应该是幂等的,这样内部的、中间的主题就可以从某个真理来源重建。(假设输入主题的保留未删除数据本身)