向节点 53 发送获取请求(sessionId=1175648978,epoch=189)时出错:org.apache.kafka.common.errors.DisconnectException

Aus*_*nTX 5 java apache-kafka kubernetes apache-kafka-streams

我们有一个包含 100 个分区的主题,负载为每小时数百万条记录。

每当我们在 Kubernetes 中使用带有状态集的状态存储来部署新版本的流处理器时,我们都会遇到这个问题。

通常,我们需要 4 个 Pod 来处理 100 个分区的工作负载。

在部署新版本之前,4 个实例已使用主题中的数据进行更新。

当我们部署新版本时,四分之三的情况下,只有 2 或 3 个实例在一分钟内处理数据,其他实例抛出异常:

 Error sending fetch request (sessionId=1175648978, epoch=189) to node 53: org.apache.kafka.common.errors.DisconnectException
Run Code Online (Sandbox Code Playgroud)

因此,分配给实例#4的分区中的所有数据都已累积,并且滞后正在增加......

如果我们将实例数量扩展到 6 或 8,则有 5 或 6 个实例正在处理数据,其他 3 或 2 个实例会抛出此异常:

 Error sending fetch request (sessionId=1175648978, epoch=189) to node 53: org.apache.kafka.common.errors.DisconnectException
Run Code Online (Sandbox Code Playgroud)

如果我们让所有实例都这样运行,最终(有些在 4 到 36 小时后)所有实例都会正常,并且任何 pod 都不再出现异常。

任何解决此问题的建议都将受到赞赏。

谢谢,

奥斯汀