libcluster
postgrex
libcluster | postgrex | |
---|---|---|
10 | 3 | |
1,886 | 1,050 | |
- | 0.8% | |
6.4 | 6.6 | |
5 months ago | 16 days ago | |
Elixir | Elixir | |
MIT License | Apache License 2.0 |
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.
postgrex
-
Elixir clustering using Postgres
Now we can replicate the same behavior in Elixir and Postgrex within IEx (Elixir's interactive shell).
-
TIL: Non standard postgres types in livebook
But I found a problem when the data type is not supported by postgrex. In this case, you can either have to write a custom postgrex extension like the example here. In postgrex GitHub repo, there are many examples for common data types, but XML is missing there.
-
Realtime: Multiplayer Edition
It sounds like Supabase is pulling out the WAL listening bits into its own library?
https://supabase.com/blog/supabase-realtime-multiplayer-gene...
If so, y'all might want to look into: https://github.com/elixir-ecto/postgrex/blob/master/lib/post...
What are some alternatives?
Nomad - Elixir/Phoenix Cloud SDK and Deployment Tool
ecto - A toolkit for data mapping and language integrated query.
horde - Horde is a distributed Supervisor and Registry backed by DeltaCrdt
eventstore - Event store using PostgreSQL for persistence
Kubex - Kubex is the kubernetes integration for Elixir projects and it is written in pure Elixir.
mariaex - Pure Elixir database driver for MariaDB / MySQL
ex_aws - A flexible, easy to use set of clients AWS APIs for Elixir
mongodb_ecto - MongoDB adapter for Ecto
erlcloud - AWS APIs library for Erlang (Amazon EC2, S3, SQS, DDB, ELB and etc)
amnesia - Mnesia wrapper for Elixir.
discovery - An OTP application for auto-discovering services with Consul
couchdb_connector - A couchdb connector for Elixir