Tuesday, February 27, 2024
Google search engine
HomeUncategorizedThe Raft Consensus Algorithm

The Raft Consensus Algorithm

What is Raft?

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. We hope Raft will make
consensus available to a wider audience, and that this wider audience will be
able to develop a variety of higher quality consensus-based systems than are
available today.

Hold on—what is consensus?

Consensus is a fundamental problem in fault-tolerant distributed systems.
Consensus involves multiple servers agreeing on values. Once they reach a
decision on a value, that decision is final. Typical consensus algorithms make
progress when any majority of their servers is available; for example, a
cluster of 5 servers can continue to operate even if 2 servers fail.
If more servers fail, they stop making progress (but will never return an
incorrect result).

Consensus typically arises in the context of replicated state machines, a
general approach to building fault-tolerant systems. Each server has a state
machine and a log. The state machine is the component that we want to make
fault-tolerant, such as a hash table. It will appear to clients that they are
interacting with a single, reliable state machine, even if a minority of the
servers in the cluster fail. Each state machine takes as input commands from
its log. In our hash table example, the log would include commands like set
x to 3
. A consensus algorithm is used to agree on the commands in the
servers’ logs. The consensus algorithm must ensure that if any state machine
applies set x to 3 as the nth command, no other
state machine will ever apply a different nth command. As a
result, each state machine processes the same series of commands and thus
produces the same series of results and arrives at the same series of states.

Raft Visualization

Here’s a Raft cluster running in your browser. You can interact with it to see
Raft in action. Five servers are shown on the left, and their logs are shown on
the right. We hope to create a screencast soon to explain what’s going on. This
visualization (RaftScope)
is still pretty rough around the edges; pull requests would be very welcome.

The Secret Lives of Data
is a different visualization of Raft. It’s more guided and less interactive, so
it may be a gentler starting point.

Publications

This is “the Raft paper”, which describes Raft in detail:
In Search of an Understandable Consensus Algorithm (Extended Version)
by Diego Ongaro and
John Ousterhout.
A slightly shorter version of this paper received a Best Paper Award at the
2014 USENIX Annual Technical Conference.

Diego Ongaro’s
Ph.D. dissertation
expands on the content of the paper in much more detail, and
it includes a simpler cluster membership change algorithm.

More Raft-related papers:

Talks

These talks serve as good introductions to Raft:

Courses teaching Raft

This is a list of courses that include lectures or programming assignments on Raft.
This might be useful for other instructors and for online learners looking for materials.
If you know of additional courses, please submit a
pull request
or an issue to update it.

Where can I ask questions?

The best place to ask questions about Raft and its implementations is the
raft-dev Google group.
Some of the implementations also have their own mailing lists; check their READMEs.

Where can I get Raft?

There are many implementations of Raft available in various stages of
development. This table lists the implementations we know about with source
code available. The most popular and/or recently updated implementations are
towards the top. This information will inevitably get out of date; please submit a
pull request
or an issue to update it.

Stars Name Primary Authors Language License Leader Election + Log Replication? Persistence? Membership Changes? Log Compaction?

Read More

RELATED ARTICLES

2 COMMENTS

  1. I believe what you composed was actually very logical.
    But, think about this, suppose you composed
    a catchier title? I am not saying your information isn’t good, but suppose you added a headline to maybe get folk’s attention? I mean The Raft Consensus Algorithm | instadsc is kinda boring.

    You ought to peek at Yahoo’s front page and watch how they create article headlines
    to get viewers to open the links. You might add a related video or a picture or two to grab people interested
    about everything’ve got to say. In my opinion, it could make your
    posts a little livelier.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments