mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Created Design: Runtime extension points (markdown)
parent
892edf422d
commit
5fecd81f64
30
Design:-Runtime-extension-points.md
Normal file
30
Design:-Runtime-extension-points.md
Normal file
@ -0,0 +1,30 @@
|
||||
(Original thread: https://groups.google.com/forum/#!topic/node-red/LFu_z85G3Fg)
|
||||
|
||||
There are a number of places in the node-red runtime where it would be desirable to plug-in alternative implementations, or provide hooks to add functionality. There are a number of use cases this would enable.
|
||||
|
||||
This page is an attempt to start organising these thoughts.
|
||||
|
||||
## Use Cases
|
||||
|
||||
### Running multiple instances of a flow
|
||||
|
||||
This is where the flows are designed such that multiple instances can be run with some sort of load balancing in front of them. This is suited to HTTP-initiated flows, with any shared state maintained via an external service such as Redis.
|
||||
|
||||
The requirement is to be able to trigger the deploy of flows across all instances.
|
||||
|
||||
This could be done in the existing storage-plugin layer.
|
||||
|
||||
### Running a flow across multiple instances
|
||||
|
||||
This is where a flow is distributed across multiple runtimes. Two connected nodes may not be running on the same instance.
|
||||
|
||||
The requirements are:
|
||||
|
||||
- co-ordinate the deploy of the flow across multiple machines
|
||||
- be able to route messages between the instances are defined by the flow
|
||||
|
||||
## Extension Points
|
||||
|
||||
- Storage layer - how/where things get stored - [already done](http://nodered.org/docs/api/storage/index.html).
|
||||
- Message routing - how a message gets routed. Default implementation does the in-memory direct access to a node's `.receive` function. Alternative implementations could serialise the message to JSON and send over the network
|
||||
- Flow handling - sits in the load/save path for flows. Need to refine how much is exposed to the API and where exactly it sits in the deploy process.
|
Loading…
Reference in New Issue
Block a user