newton-peixoto

newton-peixoto

Hello everyone! I`m currently trying to create a demo to learn more about distributed nodes and elixir libraries.

I created this repo and the goal is to create N nodes, make them all see each other, run 1 “cache” (genserver) process across the entire cluster, when the node that is parent of the said process dies, a new process is created inside other node and the last part would be to keep the state when the new process starts.

The cluster part and restart I was able to develop using horde and libcluster libraries but I dont see a way to keep the state across the nodes. Horde says something about handoff and save the state at redis, postgress or something like that… I`d like to develop this using only elixir / erlang. It also mentions delta crdt and other blog posts says something about mnesia but I dont get a way to make neither of them see the dynamic nodes once that all docs I read mentioned to set some pre known node list.

Here is the repo

Can someone please mention an alternative or solution to this problem?

PS: I`m also facing some latency when accessing the endpoint if u spot some problem that could be causing that it would help a lot THANKS :smiley:

Showing Posts 1 to 3

tfwright

tfwright

Can you elaborate on this? Even if the goal is learning, wouldn’t you want to learn good patterns around state persistence rather than bad ones? I suspect it is technically possible to achieve what you’re trying to do but I don’t think it would be a good solution for any real use case, because…

when the node that is parent of the said process dies

…AFAIK there are no guarantees around this that would allow for safe persistence of data.

Assuming you already know all that and want an answer anyway, I would guess that you would want to duplicate each state change across nodes (maybe using something like Phoenix.PubSub) rather than try to “hand it off” just in time.

newton-peixoto

newton-peixoto OP

I`m trying to implement concepts that I saw at this video ElixirConf 2018 - Docker and OTP Friends or Foes - Daniel Azuma Of course the use case is different I didnt develop a game or anything like that I’d just like to use the concepts in something simpler as a cache across nodes.

tfwright

tfwright

So I don’t have experience with Horde, but it looks like that works pretty similar to what I described under the hood, viz. the data is replicated across all nodes, so you wouldn’t need anything else, you’d just use Horde to globalize your Genserver process and it will handle the details for you. Hopefully someone with more experience with the library will be able to confirm with more details, but you might want to include “Horde” in your title/tags.

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
FlyingNoodle
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New
psy-q
I’m trying to set up Emacs with elixir-ls via lsp-mode and credo via Flycheck. This should mostly be preconfigured as Flycheck picks up c...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews