Kafka Streams中数据混乱的原因

时间:2019-12-13 21:41:22

标签: apache-kafka apache-kafka-streams

能否请您帮助我理解摘自Kafka Streams documentation的摘录:

  

在可能正在处理多个主题分区的流任务中,如果用户将应用程序配置为不等待所有分区都包含一些缓冲的数据,并从时间戳最小的分区中选取来处理下一条记录,则稍后当为其他主题分区获取某些记录时,其时间戳可能小于从另一个主题分区获取的已处理记录的时间。

我不明白:如果选择时间戳最小的分区,为什么以后会得到较小的时间戳?

1 个答案:

答案 0 :(得分:3)

我认为重要的是

  

如果用户将应用程序配置为不等待所有分区包含某些缓冲数据

由于我们不等待所有分区都有一些数据,因此流S1S2T1 <T2)可能会发生以下情况:

    时间戳为I2
  1. T2到达S2
  2. 由于没有其他可用数据,流读取了I2
  3. 时间戳为I1
  4. T1到达S1
  5. 该流读取的I1时间戳比已处理的I2

如果我们等到所有流都具有数据,我们将从所有可用项目中选择最小的项目。由于我们不这样做,因此时间戳较小的项目可能会被延迟。