Skip to content

Repository files navigation

java-raft

CircleCIQuality Gate Status

A Java implementation of the Raft consensus algorithm

motivation

I'm implementing the protocol in order to get a more in-depth understanding of it. Also as a challenge to make a readable implementation of the "understandable" consensus algorithm.

Status

The parts of the algorithm I have implemented (according to the thesis chapters) are:

ChapterNameStatus
3.4Leader election✔️
3.5Log replication✔️
3.6.1Election restriction✔️
3.6.2Committing entries from previous terms✔️
3.7Follower and candidate crashes✔️
3.8Persisted state and server restarts✔️
3.10Leadership transfer extension✔️
4Cluster membership changes✔️
4.2.1Catching up new servers✔️
4.2.2Removing the current leader
4.2.3Disruptive servers✔️
4.3Arbitrary configuration changes using joint consensus
5Log compaction✔️
6.1Finding the cluster
6.2Routing requests to the leader✔️
6.3Implementing linearizable semantics✔️
6.4Processing read-only queries more efficiently

Dependencies

The only runtime dependency is log4j 2, the aim is to implement with minimal dependencies

About

A Java implementation of the Raft consensus algorithm

Topics

Resources

Stars

27 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages