根据我对 Flink 的一点经验,我注意到即使我们有事件到达订单,它们也应该在分区后到达订单丢失。这里对此进行了讨论:流中记录的排序
所以我有3个问题可以扩展上述问题:
-
在 keyBy 函数之后订单丢失的原因对我来说仍然不清楚。为什么会这样?
-
有没有办法即使在分区后也能确保事件的顺序?
-
如果我们不创建 KeyedStreams,是否保证每个并行运算符的事件顺序?
我认为这里可能存在一些误解。我将尝试在这里重新澄清一些事情:
对于从具有相同键的同一运算符发出的元素,将保留元素的顺序。但是,在分区后的接收端,如果您使用接收的相同键来考虑所有记录,则没有任何严格的排序,这仅仅是因为保证每个并行运算符的排序。