Flink Stream 消息是否按顺序发送到下游

Are Flink Stream messages sent to downstream in order

我是Flink新手。我有一个问题,是否所有发送到下游节点的消息都是有序的?例如,

[Stream] -> [DownStream]

Stream: [1,2,3,4,5,6,7,8,9]

Downstream get [3,2,1,4,5,7,6,8,9]

如果是这样,如果我们想要按顺序处理这种情况,我们将如何处理?

如有任何帮助,我们将不胜感激!

一个操作员可以有多个输入通道。它将按照接收事件的顺序处理来自每个通道的事件。 (运算符也可以有多个输出通道。)

如果您的作业在流和下游之间有不止一条路径,那么事件可以竞争并且排序将是不确定的。否则顺序将被保留。

举个例子:假设您正在并行读取具有多个分区的 Kafka 主题。进一步想象来自给定用户的所有事件都在同一个 Kafka 分区中(并且按时间戳为每个用户排序)。然后在 Flink 中你可以使用 keyBy(user) 并确保每个用户的事件流将保持有序。另一方面,如果给定用户的事件分布在多个分区中,那么 keyBy(user) 最终会为每个用户创建一个(几乎可以肯定)乱序的事件流,因为它将拉动来自几个不同 FlinkKafkaConsumer 并行读取实例的事件在一起。