Collection of labs from MIT's upper-undergrad/graduate distributed systems course, previously coded as 6.824. All labs are written in Go and have a set of tests and tooling for simulating networks with delays or dropped packets. I'm using the edition of the course published in Spring 2024 (archive link), with lectures from 2020 (link). Big thank you to MIT for open-sourcing incredibly high quality learning resources like this.
Single-machine / multi-process MapReduce, simulating network communication with unix domain sockets.
A key-value server & client with retries and a handshake style verification. Tested using a simulation tool for unreliable connections.
Raft is a consensus algorithm for replicated state machines. In other words, it's an algorithm/system for keeping logs accross machines in-sync with each-other, enabling things like active-passive database replication and failover.
Active-passive Key/Value server cluster. Test suite randomly kills nodes or partitions network and ensures clusters recover and there is no split-brain after.
An extension of lab 4 where we shard our K/V Service based on a provided configuration; new configurations are given on-the-fly, and clusters must handle shard migration without dropping requests, experiencing split-brain, or holding unnecessary shards.