Skip to content
This repository has been archived by the owner. It is now read-only.
An implementation of the Raft Consensus Algorithm in Elixir/Erlang
Elixir CSS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config
lib
priv/static
test
web
.gitignore
.travis.yml
LICENSE
Procfile
README.md
elixir_buildpack.config
mix.exs

README.md

Raftex

An implementation of the Raft Consensus Algorithm in Elixir/Erlang using distributed finite state machines (gen_fsm).

Build Status Coverage Status

What is Consensus / what is Raft?

From the official website:

Consensus is a fundamental problem in fault-tolerant distributed systems. Consensus involves multiple servers agreeing on values. (…) Raft is a consensus algorithm that is designed to be easy to understand. It's equivalent to Paxos in fault-tolerance and performance. The difference is that it's decomposed into relatively independent subproblems, and it cleanly addresses all major pieces needed for practical systems.

Installation

  1. Clone the repository with git clone git@github.com:my-flow/raftex.git.
  2. Install the required dependencies with mix deps.get.

Watch simulation in a browser

  1. Start web server with mix phoenix.start
  2. Open a web browser and visit URL http://localhost:4000

Watch simulation in a terminal

  1. Start Elixir's interactive shell with iex -S mix.
  2. Run a simulation with 5 distributed nodes: iex(1)> Raftex.run

Copyright & License

Copyright (c) 2014-2015 Florian J. Breunig

Licensed under MIT, see LICENSE file.

You can’t perform that action at this time.