【问题标题】:Out-of-order data cause in Kafka StreamsKafka Streams中的乱序数据原因
【发布时间】:2020-04-07 08:29:53
【问题描述】:

请您帮我理解这段摘录,来自Kafka Streams documentation

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

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

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:

    我认为重要的部分是

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

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

    1. I2 带有时间戳 T2 到达 S2
    2. 流读取I2,因为没有其他可用数据
    3. I1 带有时间戳 T1 到达 S1
    4. 流读取I1,其时间戳小于I2,后者已处理

    如果我们等到所有流都有数据,我们将从所有可用项目中选择最小的项目。由于我们不存在时间戳较小的项目被延迟的可能性。

    【讨论】:

    • 哦,也许我明白了。一个分区中的时间戳独立于另一个分区中的时间戳,对吧?
    • @Snorlite 很好,即使它们是依赖的,这仍然可能发生。想象一个流送入两个分区,其中一个分区由于某种原因被延迟。
    猜你喜欢
    • 2021-07-13
    • 1970-01-01
    • 2018-08-03
    • 2022-01-23
    • 2018-10-20
    • 2019-01-15
    • 2019-02-18
    • 2018-06-14
    • 1970-01-01
    相关资源
    最近更新 更多