Kafka Streams:有一个缓慢的标点工作的负面后果是什么?

Ras*_*und 5 apache-kafka apache-kafka-streams

在我们的 Kafka Streams 拓扑中,我们有一些标点,可能需要很长时间才能运行(几分钟)。

如此缓慢的标点符号有什么后果?它们运行的​​进程会在 punctuate 运行时停止处理记录吗?它们会导致重新平衡吗?

Vas*_*kyi 4

如果您的标点符号逻辑运行缓慢(例如几分钟),Kafka 流将不会消耗来自特定分区(标点符号在其上执行)的新消息,直到标点符号完成执行。另外,长时间运行的标点符号不应触发重新平衡(重新平衡可能由于其他原因而发生)

一个分区上的标点符号是否影响其他分区取决于您是在单个节点还是多个节点上运行应用程序,还取决于num.stream.threads您可能为 Kafka Streams 指定的属性。如果您的应用程序在单个节点上运行,Kafka 流将仅对所有分区使用单个线程(默认情况下num.stream.threads为 1)。因此,在这种情况下,特定分区上的标点符号也会阻止所有其他分区。但如果您有多个应用程序实例和/或num.stream.threads大于 1 个,如果某些标点符号运行速度很快,则此类分区将不会受到其他分区上长时间运行的标点符号的影响。

  • “长时间运行的标点符号不应触发重新平衡”——只是想补充这一点。这取决于“max.poll.interval.ms”配置:只要执行标点符号,就不会调用“poll()”,因此有可能达到此超时 - 然而,在 Kafka Streams 中默认配置设置为“MAX_VALUE”,即只要您不更改配置,就永远不会发生这种情况。 (3认同)