Is there anything native in Elixir that will duplicate data to GenServers on all nodes?

I need to distribute data to a genserver on each node in the network and keep it up to date. Basically I’m creating a form of discovery service. Each node has its own routes to other services, and if one node goes down, or the endpoint that it talks to goes down, I need to update all the nodes to know of the issue so they can react and take over the responsibilities.

Is there anything in Elixir that does something like this already? I figure it’s not an uncommon problem, so there might be something, I just don’t know what terms to search for in this case.

Thanks,
Jeramy

1 Like

It’s probably worth taking a look at Horde (Horde — Horde v0.8.7 & GitHub - derekkraan/horde: Horde is a distributed Supervisor and Registry backed by DeltaCrdt). Many of the problems you are looking to solve are covered. There is a section in the docs that covers state handle-offs if a node goes down - State Handoff — Horde v0.8.7

4 Likes

Is this what you are looking for?

Failing that, have you considered the CRDT system used in phoenix presence?

This looks exactly like what I need! Thank you!