flow
flow copied to clipboard
Distributed coordination
Flow is partitioned and more than one coordinator is involved in it's execution
-
each node can have a different runtime and hence a different set of available context functions.
-
partition the function graph over multiple nodes, either by manually drawing the boundaries, or assigning functions to a node, constrained by the available context functions and those used by the flow.
-
Break up the function graph into multiple sub-graphs, each assigned to a node.
-
transparent sending/receiving of Values between nodes at the sub-graph boundaries
- need a unique flow id when deployed to identify destination/source, node id, function and input id in the flow
- stub on sending subgraph to send
- driver on receiving subgraph to receive
-
coordinator on each node to receive it's subgraph for execution, the same as if a full graph.
-
initial deployer does the partitioning (discovering other nodes and their capabilities first) and then submits the subgraphs to each as needed
-
when remote node disconnects, that's like an EOF/Null allowing each subgraph to end.