Flink Streaming事件是否按key单独分发至各task slot?
流处理Keyed事件分发规则答疑
问题1:并行度为2时,key A、key B是否会分别分配到不同的task slot?
不会绝对满足该分配规则,具体分配结果由框架的分区逻辑决定:
- 主流流处理框架默认采用
key.hashCode() % 并行度的规则计算事件目标处理子任务的索引,只有当key A、key B的哈希值对2取模结果不同时,才会分别进入两个不同的task slot。 - 如果两个key的哈希取模结果一致,两类事件会被分配到同一个task slot处理,若有自定义分区器则按自定义逻辑执行。
问题2:仅存在key A的有序事件时,是否会分散到两个task slot,导致顺序丢失?
- 所有key相同的事件路由计算结果完全一致,只会被分发到同一个task slot处理,不会分散到两个槽位。
- 单key的所有事件会由同一个并行子任务严格按照输入顺序串行处理,不会丢失原有输入顺序。
内容的提问来源于stack exchange,提问作者Akula
相关产品推荐
相关产品推荐

