在我们的Kafka Streams拓扑中,我们有一些标点符号,可能需要很长时间才能运行(几分钟)。
如此缓慢的标点符号会带来什么后果?在标点运行时,它们运行的进程会停止处理记录吗?它们会引起重新平衡吗?
答案 0 :(得分:2)
如果您的标点符号逻辑运行缓慢(如几分钟),则在标点符号完成执行之前,Kafka流将不会使用来自特定分区(在其上执行标点符号)的新消息。长时间运行的标点符号也不应触发重新平衡(由于其他原因,可能会发生重新平衡)
一个分区上的标点符是否会影响其他分区取决于您是在单个节点上还是在多个节点上运行应用程序,还取决于您可能为Kafka Streams指定的num.stream.threads
属性。
如果您的应用程序在单个节点上运行,则Kafka流将仅对所有分区使用单个线程(默认情况下,num.stream.threads
为1)。因此在这种情况下,特定分区上的标点符号也会阻止所有其他分区。但是如果您有多个应用程序实例和/或num.stream.threads
大于1,则如果某些标点符号快速运行,则此类分区将不会受到其他分区上长期运行的标点符号的影响。