Raft

Raft consensus

Distributed replication, live.

Pure Raft in Java 21 — leader election, log replication, and commit advancement. HUD below runs in real time.

LiveOutput847 ops/sTerm42Commit12,847Lag23 msLeadernode-1Uptime38:00:00

Throughput

847ops/s

Replication lag

23ms

Topology

node-1node-2node-3node-4node-5
leaderfollowercandidate

Selected

node-1

US East

leader
Term
42
Log
12,847
Match
12,847
Heartbeat
12 ms
Replication sync100%

Events

04:53:52Cluster initialized — 5 nodes online

Architecture

Modular by design

raft-core stays free of sockets and disk. Transport and storage plug in at the edges.

Design doc →

raft-core

Algorithm

Pure Raft — no I/O. Leader election, log replication, safety proofs.

raft-transport

Netty

Length-prefixed binary frames over TCP. One boss, one worker group per node.

depends on raft-core

raft-storage

Persistence

Memory-mapped 64MB log segments. CRC32-C checksums. Snapshot install RPC.

depends on raft-core

raft-cli

Tooling

Admin commands and stress tools for cluster operations.

depends on raft-core

raft-integtest

Integration

Wire-level monkey tests with TestContainers.

depends on raft-transport, raft-storage

Quick start

# Clone and verify
$ git clone https://github.com/pdj555/raft-consensus.git
$ cd raft-consensus && mvn clean verify

# Fast unit pass
$ mvn test -DskipITs=true

Protocol

Raft state machine

One leader per term. Safety from §5.4 — append-only, election safety, log matching.

States

Transitions · follower

followercandidateelection timeout
candidatefollowerhigher term discovered
leaderfollowerhigher term in RPC
$ mvn test -DskipITs=true
RaftLogTest · DefaultRaftNodeClusterTest

loading...