thamurath
How to create a distributed and loadbalanced system?
I am new to Elixir and was wondering how to deploy a distributed and load balanced system.
I mean:
I have in mind a service based architecture, so to say, where each app offers a service the the system.
There could be any number of nodes, and each of them could execute any number of applications, at least one of them.
I have been reading about libcluster, and seems to be the way to achieve automatic node connection, but:
- How to discover wich apps is running the new connected node?
- How to balance the load between them?
I have read a little bit abouf erlang :pool but I do not figure how to use it…
Any tips or documentation links to read would be very much appreciated.
Most Liked
kokolegorille
You should also check Phoenix Pubsub, as standalone… It includes tools from now obsolete Firenest.
Also I am not sure it is a good idea to apply service based architecture concept to the BEAM, because it does not really work that way. Already one node is composed of multiple “micro services”, as any process could provide a service.
Rainer
Have you thought about using a message broker instead of doing everything by yourself?
For this kind of distributed system I’d use RabbitMQ (which is written in erlang)
Last Post!
thamurath
I am pretty new to Erlang/Elixir and I still trying to learn and understand the design best practices for this platform, so maybe I am totally wrong …
The failure domains concept you mention seems very interesting. Where could I read something more about those core design philosofies? I am really interested.
Regarding the big mono repo … well I am currently working on a multi-repo micro service solution and … it is a nightmare. In my experience so much repos add too much complexity without any reward …but that´s another story.
Thanks for your time and your answers …
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex










