Skip to content

Repository files navigation

6.5840 - Distributed-Systems

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.

Labs

Lab 1: MapReduce

Single-machine / multi-process MapReduce, simulating network communication with unix domain sockets.

Lab 2: Key/Value Server & Client

A key-value server & client with retries and a handshake style verification. Tested using a simulation tool for unreliable connections.

Lab 3: Implementing Raft

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.

Lab 4: Fault-tolerant Key/Value Server

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.

Lab 5: Sharded K/V

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.

About

MIT's graduate distributed systems course. https://pdos.csail.mit.edu/6.824/, https://www.youtube.com/@6.824

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages