Distributed Nodes
slawlor opened this issue · comments
Following from Erlang, we want to support distributed nodes
https://www.erlang.org/doc/reference_manual/distributed.html
We need
- Tcp connections and transmission
- Encrypted socket communications #55
- Distribution handshake
- Dist specification
- Serializable messages which can go over the network boundary in a distributed environment
- Each "node" needs to know of all nodes it's dist connected to (this includes updating the local PG groups and named registry with remote nodes)
- Each "remote" node should be a local actor that talks to the remote channel, allowing for local message processing without knowing anything about the actor being remote
- Registration of remote actors on a local system (
control.proto
) - Lifecycle events of actors (when an actor dies, it should notify it's local
NodeSession
who propagates it to the remote system to cleanup theRemoteActor
instance) - In Erlang, nodes connect to other nodes a given node is connected to (as an optional functionality), so like
A
connects toB
who's also connected toC
, thenA
also initiates a connection toC
. This should be relatively simple to implement as an optional functionality. #53 - A lot of documentation
- Added e2e framework with initial test on auth handshake + pg group synchronization
Already present:
- We added support for remote referenced actor ids in #14 see this commit