Mirror of Apache Ratis (Incubating)
Java C Shell Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
dev-support RATIS-144. Build all the modules during the precommit yetus builds. C… Nov 24, 2017
ratis-assembly RATIS-299. Error when running start-all.sh in ratis-examples. Contrib… Aug 14, 2018
ratis-client RATIS-288. Pom cleanup/simplification. Contributed by Josh Elser Aug 7, 2018
ratis-common RATIS-288. Pom cleanup/simplification. Contributed by Josh Elser Aug 7, 2018
ratis-examples RATIS-299. Error when running start-all.sh in ratis-examples. Contrib… Aug 14, 2018
ratis-grpc RATIS-270. Replication ALL requests should not be replied from retry … Aug 11, 2018
ratis-hadoop-shaded RATIS-288. Pom cleanup/simplification. Contributed by Josh Elser Aug 7, 2018
ratis-hadoop Switch to 0.3.0-SNAPSHOT after the 0.2.0 release Jul 15, 2018
ratis-netty Switch to 0.3.0-SNAPSHOT after the 0.2.0 release Jul 15, 2018
ratis-proto-shaded RATIS-299. Error when running start-all.sh in ratis-examples. Contrib… Aug 14, 2018
ratis-replicated-map Switch to 0.3.0-SNAPSHOT after the 0.2.0 release Jul 15, 2018
ratis-server RATIS-295. RaftLogWorker#flushWrites should also flush state machine … Aug 17, 2018
.gitignore RATIS-288. Pom cleanup/simplification. Contributed by Josh Elser Aug 7, 2018
BUILDING.md RATIS-288. Pom cleanup/simplification. Contributed by Josh Elser Aug 7, 2018
DEPLOY.md RATIS-184. Document how to deploy the snapshot artifacts. Contributed… Jan 29, 2018
DISCLAIMER.txt RATIS-83. Add a DISCLAIMER file. Apr 29, 2017
LICENSE RATIS-249. Create separated LICENSE AND NOTICE files for binary and s… Jun 28, 2018
NOTICE RATIS-249. Create separated LICENSE AND NOTICE files for binary and s… Jun 28, 2018
README.md RATIS-55. Add missing license headers. Contributed by Tsz Wo Nicholas… Mar 30, 2017
pom.xml RATIS-288. Pom cleanup/simplification. Contributed by Josh Elser Aug 7, 2018
start-build-env.sh RATIS-4. Setup jenkins. Contributed by Marton Elek. Nov 2, 2017

README.md

Ratis

Ratis is a java library that implements the RAFT protocol[1]. The Raft paper can be accessed at [this link] (https://raft.github.io/raft.pdf). The paper introduces Raft and states its motivations in following words:

Raft is a consensus algorithm for managing a replicated log. It produces a result equivalent to (multi-)Paxos, and it is as efficient as Paxos, but its structure is different from Paxos; this makes Raft more understandable than Paxos and also provides a better foundation for building practical systems.

Ratis aims to make raft available as a java library that can be used by any system that needs to use a replicated log. It provides pluggability for state machine implementations to manage replicated states. It also provides pluggability for Raft log, and rpc implementations to make it easy for integration with other projects. Another important goal is to support high throughput data ingest so that it can be used for more general data replication use cases.

Reference

[1] Diego Ongaro and John Ousterhout. 2014. In search of an understandable consensus algorithm. In Proceedings of the 2014 USENIX conference on USENIX Annual Technical Conference (USENIX ATC'14), Garth Gibson and Nickolai Zeldovich (Eds.). USENIX Association, Berkeley, CA, USA, 305-320.