Apache kafka 卡夫卡流中的无序数据原因

Apache kafka 卡夫卡流中的无序数据原因,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,请您帮助我理解以下摘录: 在可能正在处理多个主题分区的流任务中,如果用户将应用程序配置为不等待所有分区都包含一些缓冲数据,并从具有最小时间戳的分区中选取以处理下一条记录,则稍后在为其他主题分区提取某些记录时,它们的时间戳可能比从另一个主题分区获取的已处理记录小 我不明白逻辑:如果选择时间戳最小的分区,为什么以后会得到更小的时间戳?我认为重要的部分是 如果用户将应用程序配置为不等待所有分区包含一些缓冲数据 由于我们不等待所有分区都有一些数据,因此流S1和S2(T1T2)可能会出现以下情况: 时间戳

请您帮助我理解以下摘录:

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


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

我认为重要的部分是

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

由于我们不等待所有分区都有一些数据,因此流
S1
S2
T1
T2
)可能会出现以下情况:

  • 时间戳为
    T2的
    I2
    到达
    S2
  • 由于没有其他可用数据,因此流读取
    I2
  • 时间戳为
    T1的
    I1
    到达
    S1
  • 流读取
    I1
    ,其时间戳小于已处理的
    I2

  • 如果我们等到所有流都有数据,我们就会从所有可用项中选择最小的项。因为我们没有时间戳,所以时间戳较小的项目可能会延迟。

    哦,也许我知道了。一个分区中的时间戳独立于另一个分区中的时间戳,对吗?@Snorlite好吧,即使它们是依赖的,这仍然可能发生。假设一个流馈送到两个分区,其中一个分区由于某种原因而延迟。