nerves
libcluster
nerves | libcluster | |
---|---|---|
11 | 10 | |
2,150 | 1,886 | |
0.6% | - | |
8.4 | 6.4 | |
10 days ago | 5 months ago | |
Elixir | Elixir | |
Apache License 2.0 | 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.
nerves
- Embedded Elixir
-
Where Nerves-related Mix tasks are defined?
The nerves package's README.md explains what each repository is responsible for with a comprehensive listing.
- Elixir for Ruby developers: the three most important differences
-
Firefly – A new compiler and runtime for BEAM languages
You may be already aware of it, but just in case, there is the Nerves project: https://nerves-project.org/
-
Mixing sync and async views in the same application
As for embedded... I've only dabbled. Yeah you're not going to run Elixir on an Arduino or other very minimal bare metal embedded processor. But the Nerves Project (https://nerves-project.org/) which runs Elixir directly on SBCs is very well regarded. But either way it doesn't matter, since I thought we were talking about web dev, which is where Phoenix and Elixir just make more sense, for me.
-
what is the common usage of elixir
For me particularly I like it for things like APIs, Web Platforms (lower resource usage than other languages), and embedded devices via Nerves. However I've also used it on my endpoints to monitor them via Erlang's built in os_mon. Another usage is the distributed nature of erlang can allow you to do things like connect two nodes and run code on a remote node via remote procedure calls. This would allow you to execute something in a nearby geolocated node and reduce latency. Fly.io did a talk on this feature.
-
Functional programming language for embedded devices?
Check out nerves, a set of tools and libraries for embedded development with Elixir.
- Craft and deploy bulletproof embedded software in Elixir
-
A native Go userland for your Raspberry Pi 3 or 4 appliances
Is this kinda like the Nerves approach but for Golang? (https://github.com/nerves-project/nerves)
-
Use case of elixir
Nerves is also popular for embedded.
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.
What are some alternatives?
tamago - TamaGo - ARM/RISC-V bare metal Go
Nomad - Elixir/Phoenix Cloud SDK and Deployment Tool
live_svelte - Svelte inside Phoenix LiveView with seamless end-to-end reactivity
horde - Horde is a distributed Supervisor and Registry backed by DeltaCrdt
erlexec - Execute and control OS processes from Erlang/OTP
Kubex - Kubex is the kubernetes integration for Elixir projects and it is written in pure Elixir.
cubdb - Elixir embedded key/value database
ex_aws - A flexible, easy to use set of clients AWS APIs for Elixir
nerves_livebook - Develop on embedded devices with Livebook and Nerves
erlcloud - AWS APIs library for Erlang (Amazon EC2, S3, SQS, DDB, ELB and etc)
hardcaml - Hardcaml is an OCaml library for designing hardware.
discovery - An OTP application for auto-discovering services with Consul