Goal
Work up the Gossip Glomers ladder from a trivial echo node to a linearizable, Raft-backed key-value store, with Jepsen's Maelstrom harness injecting partitions and checking your answers. Proves you can implement replication, ordering, and consensus — not just name them — and that your code survives the failure modes the concept notes describe.
Subject: full brief & instructions
Practices
- Distributed consensus — elections, terms, quorum commit: the whole note, executed.
- Asynchronous and distributed system patterns — retries, at-least-once delivery, and idempotent handlers under real partitions.
- Message brokers & event streaming — the Kafka-style log challenge is its data model in miniature.
- System design fundamentals — the consistency spectrum, paid for in round trips.
Milestones
- Echo — wire a node up to Maelstrom; learn the message/reply plumbing before anything distributed happens.
- Unique ID generation — globally unique IDs with zero coordination: your first deliberate avoidance of consensus.
- Broadcast — gossip values to every node; then keep it working through partitions (retry + idempotence); then tune fan-out for the latency/message-count trade.
- Grow-only counter — an eventually consistent counter on the provided KV; feel exactly what "eventual" buys and what it refuses to promise.
- Kafka-style log — replicated append-only logs with offsets and committed reads.
- Totally-available transactions — weak-isolation transactions that stay available when the network splits.
- Raft — leader election, log replication, and quorum commit from the Raft paper, following Maelstrom's Raft walkthrough; pass the linearizable-KV workload with partitions enabled.
Stretch goals
- Log compaction and snapshotting once the log grows unbounded.
- Add leases and fencing tokens to the Raft KV, then race a paused client against a new leader to see why the token matters.
- The MIT 6.5840 Raft labs — persistence and a harsher test suite for the same protocol.
Related
- Implement Raft with Gossip Glomers — subject — the self-contained work statement: Maelstrom environment, per-rung workload contracts, and the Raft requirements.
- Distributed consensus — cites this exercise from its Practice list.
- Asynchronous and distributed system patterns — likewise; milestones 2–4 are its patterns under test.
- Message brokers & event streaming — likewise, via the Kafka-style log.
- Build your own Redis — kin exercise: single-node depth to this one's multi-node breadth.