flow icon indicating copy to clipboard operation
flow copied to clipboard

Distributed coordination

Open andrewdavidmackenzie opened this issue 1 year ago • 1 comments

Flow is partitioned and more than one coordinator is involved in it's execution

andrewdavidmackenzie avatar Oct 06 '22 19:10 andrewdavidmackenzie

  • 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.

andrewdavidmackenzie avatar Mar 17 '23 17:03 andrewdavidmackenzie