ra
Atomix
ra | Atomix | |
---|---|---|
7 | 1 | |
778 | 2,345 | |
0.5% | -0.0% | |
8.9 | 2.2 | |
5 days ago | 30 days ago | |
Erlang | Go | |
GNU General Public License v3.0 or later | 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.
ra
-
The Erlang Runtime System
Erlang/OTP doesn't handle leader election, and by itself is bad at handling netsplits.
There is https://github.com/rabbitmq/ra which is a Raft implementation in Erlang that is Jepsen-tested. You could use it to build "etcd in Erlang", or https://github.com/rabbitmq/khepri which is built on top of Ra.
-
Ask HN: Good examples of fault-tolerant Erlang code?
Just to add to this, there are some implementations of things like consensus algorithms in Erlang such as Ra: https://github.com/rabbitmq/ra
- Elixir at Ramp
-
An Animated Introduction to Elixir
You may find these interesting...
- "The Onion Layer Theory" https://learnyousomeerlang.com/building-applications-with-ot...
- "On Erlang, State and Crashes" http://jlouisramblings.blogspot.com/2010/11/on-erlang-state-...
- "Why Restarting Works" https://ferd.ca/the-zen-of-erlang.html (search for "Heisenbug")
> you should store the state in the external system
Disk works too, but if you're multi-node this means you now have a distributed database embedded in your system, which may or may not be your goal :)
RabbitMQ does this, they developed a library for "persistent, fault-tolerant and replicated state machines" based on Raft: https://github.com/rabbitmq/ra.
- Question about a Decentralized Timeline
-
Building Aggregates in Elixir and PostgreSQL
Here is link number 1 - Previous text "Ra"
Atomix
-
How to Achieve Geo-redundancy with Zeebe
To understand how we can achieve resilience in Zeebe, you first need to understand how Zeebe does replication. Zeebe uses distributed consensus — more specifically theRaft Consensus Algorithm — for replication.There is an awesomevisual explanation of the Raft Consensus Algorithm available online, so I will not go into all the details here. The basic idea is that there is a single leader and a set of followers. The most common setup is to have one leader and two followers, and you’ll see why soon.
What are some alternatives?
lasp - Prototype implementation of Lasp in Erlang.
Hazelcast - Hazelcast is a unified real-time data platform combining stream processing with a fast data store, allowing customers to act instantly on data-in-motion for real-time insights.
MicroRaft - Feature-complete implementation of the Raft consensus algorithm in Java
Apache ZooKeeper - Apache ZooKeeper
khepri - Khepri is a tree-like replicated on-disk database library for Erlang and Elixir.
Akka - Build highly concurrent, distributed, and resilient message-driven applications on the JVM
asdf - Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more
JGroups - The JGroups project
buffstreams - A library to simplify writing applications using TCP sockets to stream protobuff messages
Redisson - Redisson - Easy Redis Java client and Real-Time Data Platform. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache ...
fasthttp - Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http
Vert.x - Vert.x is a tool-kit for building reactive applications on the JVM