hazelcast jet 分区内的顺序处理

Sequential processing within a partition in hazelcast jet

在分区内,jet 是否按顺序处理每个项目,and/or是否有这样的设置?

谢谢 香农

每个源处理器按顺序处理一个外部分区中的项目。例如,每个 Kafka 分区都分配给单个处理器实例,处理器按顺序发出数据。

但是,如果一个下游加工商从多个上游加工商那里取货,则顺序是不确定的。但是,永远无法重新订购来自一个上游处理器的项目。

示例:让我们有两个顶点,ABA有两个实例:A1A2B 只有一个实例 B1。如果 A1 发出项目 I1I2A2 发出I3I4,B1可以任意顺序接收,但永远接收不到I2I1 之前或 I4I3 之前。例如I3I1I2I4就是可能的顺序,但是 I2I1I3I4 不是。

在这些情况下,将保持两个顶点之间的顺序:

  • 两者具有相同的局部并行度,并且使用 Edge.isolated()
  • 两者都连接到具有分区边缘的上游处理器,使用相同的密钥,具有相同的并行性,并且两者要么是分布式的,要么都是非分布式的。

请注意,在这些情况下,下游处理器始终有一个上游处理器。

另请查看这张图片(摘自 here)。两个 Tokenize 圆是 Tokenize 顶点的两个处理器实例。