Flink streaming:事件是否根据它们的键分别分发到每个任务槽?

Flink streaming: Do the events get distributed to each task slots separately according to their keys?

例如,如果我有按键 A 排序的事件和按键 B 排序的事件,并行度为 2。是否所有带有键 A 的事件都转到一个任务槽,键 B 的事件转到另一个任务槽任务槽?

如果我只按密钥 A 的顺序获取事件会发生什么情况。它们是否也被分配到两个任务槽。这是否意味着我失去了他们来的顺序?

不,这不是它的工作原理。

发生的情况是每个键都映射到一个键组,其中键组的总数由集群的最大并行度(配置设置)决定。然后将关键组映射到任务槽。如果有两个键和两个插槽,完全有可能两个键都分配到同一个插槽。

密钥的密钥组是:

MathUtils.murmurHash(key.hashCode()) % maxParallelism

密钥组的插槽是:

keyGroup * actualParallelism / maxParallelism

关于维护顺序,请参阅 and