Website • Javadoc • Atomix • Jepsen Tests • Google Group
Copycat is a feature complete, fully asynchronous implementation of the Raft consensus algorithm in Java 8 built for Atomix and designed for use in any project. The implementation provides a fully featured client and server to operate on replicated state machines. The implementation includes:
- Pre-vote election protocol (§4.2.3)
- Session-based linearizable writes (§6.3)
- Lease-based fast linearizable reads from leaders (§6.4.1)
- Fast sequential reads from followers (§6.4.1)
- FIFO consistency for concurrent/asynchronous operations (§11.1.2)
- Session-based state machine events (§6.3)
- Membership changes (§4.3)
- Asynchronous gossip protocol
- Incremental log compaction (§5.3)
- Snapshots (§5.1)
Additionally, this implementation has undergone extensive Jepsen testing to verify it maintains linearizability in a number of different failure scenarios.
For more information on the Raft implementation itself, see Copycat architecture