Mission
Break consensus! Make two nodes commit different values. Raft claims this is impossible — prove it wrong!
Controls
Double-click Kill / recover a node
Click & hold Delay a node's messages
Only one node can be down at a time.
Click & hold Delay a node's messages
Only one node can be down at a time.
Raft Protocol
Election
rv(term): "Vote for me as leader of term T"
vr(term, vote): "I vote yes/no for term T" Replication ae(value, term): "Append this entry at term T"
ar(term, ack): "Appended / rejected" Commit commit(value): "Value V is committed!"
vr(term, vote): "I vote yes/no for term T" Replication ae(value, term): "Append this entry at term T"
ar(term, ack): "Appended / rejected" Commit commit(value): "Value V is committed!"
Safety Invariant
"If a value is committed, no different value can ever be committed."
SAFETY HOLDS