Here's a 424-line strict-serializable, distributed, transactional key-value store, including a lazy, immutable hash-tree stored in an eventually-consistent datastore (e.g. Cassandra) and a single root pointer stored in a linearizable kv store (e.g. etcd). Exercised by Maelstrom/Jepsen, checked by Elle for transactional anomalies. Performance plots, concurrency traces, and Lamport diagrams help you understand system behavior.

github.com/jepsen-io/maelstrom

This is still very much a work in progress--I have several weeks of writing docs and rehearsing ahead of me--but it's coming together as a pretty fantastic testbed for learning algorithms. You can actually see and get reasonable feedback on whether you're doing it right, and understand how different concurrency structures, choices of tuning parameters, etc affect message flow, performance, and correctness.

Sign in to participate in the conversation
Fosstodon

Fosstodon is an English speaking Mastodon instance that is open to anyone who is interested in technology; particularly free & open source software.