Apache flink Flink流消息是否按顺序发送到下游

Apache flink Flink流消息是否按顺序发送到下游,apache-flink,Apache Flink,我是弗林克的新手。我有一个问题,如果发送到下游节点的所有消息都是有序的?比如说, [Stream] -> [DownStream] Stream: [1,2,3,4,5,6,7,8,9] Downstream get [3,2,1,4,5,7,6,8,9] 如果是这样的话,如果我们想处理好这个案件,我们该如何处理 任何帮助都将不胜感激 操作员可以有多个输入通道。它将按照接收顺序处理来自每个通道的事件。(操作员也可以有多个输出通道。) 如果您的作业在流和下游之间有多条路径,那么事件可以

我是弗林克的新手。我有一个问题,如果发送到下游节点的所有消息都是有序的?比如说,

[Stream] -> [DownStream]

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

Downstream get [3,2,1,4,5,7,6,8,9]
如果是这样的话,如果我们想处理好这个案件,我们该如何处理


任何帮助都将不胜感激

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

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


例如:假设您正在并行地阅读一个带有多个分区的卡夫卡主题。进一步设想,来自给定用户的所有事件都在同一个Kafka分区中(并且按照时间戳的顺序,对每个用户)。然后在Flink中,您可以使用
keyBy(user)
,并确保每个用户的事件流保持有序。另一方面,如果给定用户的事件分布在多个分区中,那么
keyBy(user)
将最终为每个用户创建一个(几乎肯定)无序的事件流,因为它将从几个不同的
FlinkKafkaConsumer
实例中收集并行读取的事件。

非常感谢!另一个案子怎么样。假设我们有来自卡夫卡的消息[1,2]。这将分发到两个kafka使用者分区。所以一个分区有[1],另一个分区有[2]。当这两个分区发出数据时,如果我们不使用
keyBy()
,下游函数是否总是会看到[1,2]?Kafka只保证在单个分区内排序。因此,有了两个分区,所有的赌注都没有了。