hazelcast jet 分区内的顺序处理
Sequential processing within a partition in hazelcast jet
在分区内,jet 是否按顺序处理每个项目,and/or是否有这样的设置?
谢谢
香农
每个源处理器按顺序处理一个外部分区中的项目。例如,每个 Kafka 分区都分配给单个处理器实例,处理器按顺序发出数据。
但是,如果一个下游加工商从多个上游加工商那里取货,则顺序是不确定的。但是,永远无法重新订购来自一个上游处理器的项目。
示例:让我们有两个顶点,A 和 B。 A有两个实例:A1、A2; B 只有一个实例 B1。如果 A1 发出项目 I1 和 I2 和 A2 发出I3和I4,B1可以任意顺序接收,但永远接收不到I2 在 I1 之前或 I4 在 I3 之前。例如I3、I1、I2、I4就是可能的顺序,但是 I2、I1、I3、I4 不是。
在这些情况下,将保持两个顶点之间的顺序:
- 两者具有相同的局部并行度,并且使用
Edge.isolated()
。
- 两者都连接到具有分区边缘的上游处理器,使用相同的密钥,具有相同的并行性,并且两者要么是分布式的,要么都是非分布式的。
请注意,在这些情况下,下游处理器始终有一个上游处理器。
另请查看这张图片(摘自 here)。两个 Tokenize 圆是 Tokenize 顶点的两个处理器实例。
在分区内,jet 是否按顺序处理每个项目,and/or是否有这样的设置?
谢谢 香农
每个源处理器按顺序处理一个外部分区中的项目。例如,每个 Kafka 分区都分配给单个处理器实例,处理器按顺序发出数据。
但是,如果一个下游加工商从多个上游加工商那里取货,则顺序是不确定的。但是,永远无法重新订购来自一个上游处理器的项目。
示例:让我们有两个顶点,A 和 B。 A有两个实例:A1、A2; B 只有一个实例 B1。如果 A1 发出项目 I1 和 I2 和 A2 发出I3和I4,B1可以任意顺序接收,但永远接收不到I2 在 I1 之前或 I4 在 I3 之前。例如I3、I1、I2、I4就是可能的顺序,但是 I2、I1、I3、I4 不是。
在这些情况下,将保持两个顶点之间的顺序:
- 两者具有相同的局部并行度,并且使用
Edge.isolated()
。 - 两者都连接到具有分区边缘的上游处理器,使用相同的密钥,具有相同的并行性,并且两者要么是分布式的,要么都是非分布式的。
请注意,在这些情况下,下游处理器始终有一个上游处理器。
另请查看这张图片(摘自 here)。两个 Tokenize 圆是 Tokenize 顶点的两个处理器实例。