-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Labels
Description
I want to start design discussion on how to approach erlang-like supervisors including restart strategies and how this will interplay with a service discovery system and possibly real-time code replacement.
Some questions/comments I have:
-
what's the (semantic) difference between a
nurseryand asupervisor?- a nursery is more primitive and is what a supervisor should be built upon (eg. Alternative supervision logic / custom nurseries python-trio/trio#569)?
- should a
supervisorbe specific to managing (possibly distributed) processes in which case does having anurserymean anything other then a special type of supervisor? - there's been some interesting talk of renaming nurseries and how
asynciomight be approaching nurseries/supervisors
-
an explicit distinction should be made between a
MainProcesssupervisor and thearbiteractor- the
Arbiteris per-host and is part of service discovery between hosts
- the
-
how do we best implement a distributed supervisor (one that spawns actors over multiple hosts)?
- does it simply send the spawn request to the appropriate
arbiterwho will then create or use a host-local nursery? - what happens when all actors on the remote host go down but a remote actor is still using a remotely spawned actor in that process cluster?
- does it simply send the spawn request to the appropriate
-
what does a distributed process supervisor API look like?
- how does this interact with the
arbiterand service discovery system?
- how does this interact with the
-
how does an orchestration layer build on all this?
-
here's erlang's supervisor behaviors
Much more to come...
Reactions are currently unavailable