Erynn
if i have a thousands of nodes forming cluster where nodes are connected manually forming a ring(node1 to 2, 2 to 3, 3 to 4… last to 1node).
if all nodes have 1 genserver registered with their module. and if any genserver fail then they again restart and in handle_continue, they use Enum.each(Node.list, fn node → GenServer.cast({MODULE,node}, (:presence, {Node.self, self})) and when each node receive in hansle_info they store this data in ets table in each node. then they send their Node name with pid by using Keenel.send. by doing this each table contain all nodes genserver pid?
is it good idea and better in performance?
Trending in Questions
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
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
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
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
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
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
apply_graft/2 doesn’t rewrite an add_many sub-workflow’s deps on an add step. Grafted jobs cancel with “upstream job was deleted”
Version...
New
Other Trending Topics
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
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
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
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
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
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #blog-post
- #ai
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
Awlexus
It sounds to me like you are reimplementing process groups. Using those should be easier and possibly more performant, since not every process in the group would need to create its own ETS table
Erynn
will my implimentation work for 1000 nodes?
Awlexus
It should “work” in theory, but I don’t have 1000 nodes to test this on. Ideally, you’d benchmark this for a realistic scenario you want to handle and then decide for yourself if you need to improve performance to ensure the system operates within your operations.
benwilson512
You’ve made a few posts about this node structure, can you elaborate about this? This is a very large number of nodes, have you looked at Partisan? Can you discuss why you chose that architecture?
Erynn
because by default, it(distributed erlang) had created a fully meshed network. so i set connect_all false and then use a key value database to assemble meshed network.
benwilson512
Hey @Erynn my goal was to understand why you have 1000 nodes at all, I understand that distributed erlang doesn’t work for that. Partisan however isn’t distributed erlang, so I’m curious if you evaluated that since it is designed for large erlang clusters.
Erynn
1000 nodes for a chat system.
benwilson512
@Erynn I don’t understand how you expect to get quality answers without asking a quality question. WhatsApp ran a multi billion user chat app on < 50 servers so you’re gonna need to use multiple sentences and expand on your thinking here.
Erynn
1000 nodes for a chat system. now i am trying to scale it for more nodes, so now i am trying to sync ets table to another node but for that i have to know that node pid, for that i am registering 1 genserver per node. and i am trying to keep 1 ets table per node where all nodes genserver pid is there. for that i am thinking, if 1 genserver fail means that ets table gone, then genserver registered and use Enum.each(Node.list, fn node → GenServer.cast({MODULE , node}, {:presence, {Node.self, self}}) and when each genserver module receive in handle_info and insert in that node ets table and then they use Kernel.send to send their {Node.self, self} to back. and if all nodes pid is there in each ets table then we can use another genserver to sync ets table in that node?
benwilson512
This is a restatement of your question, not an explanation for why a 1000 node cluster was the best way to solve your problem.
To be more direct: I think using 1000 erlang nodes is a bad idea for almost any system, and particularly when structured in a loop. I don’t think there are satisfying answers to the questions you are asking, because the questions you are asking involve a cluster architecture that is fundamentally bad.
If you can talk to us about the larger picture problems you are trying to face then perhaps we could provide some input. Otherwise I think this thread is at an impasse.
See: https://xyproblem.info/