You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"description": "Ordered enables ordered processing for the entire pipeline. When enabled, messages will be processed in order based on their event time. This can be overridden at the vertex level."
21593
+
"description": "Ordered enables order-preserving processing for the entire pipeline. When enabled, messages will be processed in their arrival order (FIFO within each partition). This can be overridden at the vertex level."
21594
21594
},
21595
21595
"sideInputs": {
21596
21596
"description": "SideInputs defines the Side Inputs of a pipeline.",
"description": "Ordered enables ordered processing for the entire pipeline. When enabled, messages will be processed in order based on their event time. This can be overridden at the vertex level.",
21579
+
"description": "Ordered enables order-preserving processing for the entire pipeline. When enabled, messages will be processed in their arrival order (FIFO within each partition). This can be overridden at the vertex level.",
|**Order preservation (this feature)**| Messages are processed in the same order they were written to the ISB - i.e., FIFO. Message N is processed only after message N-1 completes, within a partition. |
21
+
|**Timestamp ordering**| Messages are sorted by event time so that earlier events are processed before later ones. This feature does **not** provide timestamp ordering. |
22
+
23
+
Sources may emit events whose event-time timestamps are not monotonically increasing (e.g., late-arriving data,
24
+
multiple producers). Order preservation guarantees that messages are processed in their **arrival order** (the order
25
+
the source emitted them into the pipeline), regardless of their event timestamps.
26
+
27
+
In short: if your source emits messages A, B, C in that sequence, order preservation guarantees they are processed in
28
+
the sequence A, B, C - even if B has an earlier event timestamp than A.
11
29
12
30
## How It Works
13
31
14
32
Ordered processing works differently depending on the vertex type:
|**Source**| Always preserves input order - messages are emitted into the pipeline in the order received from the external source. No configuration needed.|
19
37
|**Map**| Requires `partitions` to be configured. Replicas are fixed to the `partitions` count. Messages are routed to partitions by key hash, so all messages with the same key are processed by the same pod in order. |
20
-
|**Reduce**| Already partitioned and ordered — no additional configuration needed. |
21
-
|**Sink**| Same as Map — requires `partitions`. Replicas are fixed to the partition count. |
38
+
|**Reduce**| Already partitioned and order-preserving - no additional configuration needed.|
39
+
|**Sink**| Same as Map - requires `partitions`. Replicas are fixed to the partition count.|
22
40
23
41
When ordered processing is enabled for a Map or Sink vertex:
42
+
24
43
- The number of replicas is automatically fixed to the partition count (one pod per partition).
25
-
- Autoscaling is disabled for that vertex — you must not set `scale.min` or `scale.max`.
26
-
- Messages are routed to partitions by hashing their keys, ensuring all messages with the same key go to the same pod in
27
-
FIFO order.
44
+
- Autoscaling is disabled for that vertex - you must not set `scale.min` or `scale.max`.
45
+
- Messages are routed to partitions by hashing their keys, ensuring all messages with the same key go to the same pod,
46
+
preserving their arrival order.
28
47
29
48
30
49
## Pipeline Specification
31
50
32
-
Enable ordered processing by setting `ordered.enabled: true` at the pipeline level. For Map and Sink vertices, set
33
-
`partitions` to the number of ordered lanes you need — the controller will fix replicas to that count automatically.
51
+
Enable order-preserving processing by setting `ordered.enabled: true` at the pipeline level. For Map and Sink
52
+
vertices, set `partitions` to the number of ordered lanes you need - the controller will fix replicas to that count
0 commit comments