libcluster
libcluster_postgres
libcluster | libcluster_postgres | |
---|---|---|
10 | 3 | |
1,886 | 177 | |
- | 2.8% | |
6.4 | 6.7 | |
5 months ago | 3 months ago | |
Elixir | Elixir | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
libcluster
-
Elixir clustering using Postgres
libcluster is the go-to package for connecting multiple BEAM instances and setting up healing strategies. libcluster provides out-of-the-box strategies and it allows users to define their own strategies by implementing a simple behavior that defines cluster formation and healing according to the supporting service you want to use.
- Phoenix 1.7 for Elixir: Edit a Form in a Modal
- Elixir for Ruby developers: the three most important differences
-
cannot query kubernetes (unauthorized): endpoints is forbidden: User cannot list endpoints in the namespace
I am using libcluster to connect my nodesI get the following error:
-
We used Elixir's Observer to hunt down bottlenecks
Distributed Elixir can be done with Docker containers too, see https://github.com/bitwalker/libcluster which by default has some Kubernetes support but you can also have third party (or custom) clustering strategies. I've not done this myself but I've seen articles about this a lot during the past years.
Hot code updates for most applications aren't really worth it in my opinion, assuming you do something like blue/green rollover deployments. It's cool that it's possible though. But it requires appup files and afaik Distillery is one of the release tools that has support for it built-in.
-
If you were in charge of a startup tech stack, how would you use elixir to actually scale and make every work seamlessly?
On the deployment level, you can use synchronous communication using API-based solutions or asynchronous communication using external solutions (RabbitMQ, Kafka,...) or Erlang/Elixir tools (message passing, pg2, PubSub, Libcluster,...)
- Nodes
- Nodes Elixir
-
Clustering nodes with different basenames
Looking throught libcluster code (https://github.com/bitwalker/libcluster/blob/master/lib/strategy/kubernetes_dns.ex#L150) it does seem to require that both nodes share the same basename.
-
Building a Distributed Turn-Based Game System in Elixir
libcluster – Automatic cluster formation/healing for Elixir applications.
libcluster_postgres
-
Elixir clustering using Postgres
However, when it comes to connecting the servers, there seems to be a barrier of entry that many people encounter, including ourselves, on how to provide the name discovery required to connect said servers. We have released our approach to solving this problem by open-sourcing libcluster Postgres Strategy and today, we explore the motivations behind its creation and the methodologies employed in its development.
-
Rethinking Serverless with Flame
Ah, that makes a lot of sense - I think the FLAME.Parent{} approach may enable backends that wouldn't be possible otherwise.
For example, if I used the heroku api to do the equivalent of ps:scale to boot up more nodes - those new nodes (dynos in heroku parlance) could see what kind of pool members they are. I don't think there is a way to do dyno specific env vars - they apply at the app level.
If anyone tries to do a Heroku backend before I do, an alternative might be to use distinct process types in the Procfile for each named pool and ps:scale those to 0 or more.
Also, might need something like Supabase's libcluster_postgres[1] to fully pull it off.
[1] https://github.com/supabase/libcluster_postgres
- Show HN: Libcluster Postgres Strategy for Elixir
What are some alternatives?
Nomad - Elixir/Phoenix Cloud SDK and Deployment Tool
sst - Build modern full-stack applications on AWS
horde - Horde is a distributed Supervisor and Registry backed by DeltaCrdt
flame
Kubex - Kubex is the kubernetes integration for Elixir projects and it is written in pure Elixir.
libcluster_postgres - Postgres strategy for libcluster
ex_aws - A flexible, easy to use set of clients AWS APIs for Elixir
basic-examples - Contains source code for the basic examples in the PiCloud Documentation.
erlcloud - AWS APIs library for Erlang (Amazon EC2, S3, SQS, DDB, ELB and etc)
discovery - An OTP application for auto-discovering services with Consul
Cloudi - A Cloud at the lowest level!
aws - AWS clients for Elixir