explaingit

prayag2003/distributed-systems

0PythonAudience · developerComplexity · 2/5ActiveSetup · easy

TLDR

Personal Python study notebook of exercises from Martin Kleppmann's Cambridge distributed systems course. Currently holds one completed exercise on FIFO links over unordered links.

Mindmap

mindmap
  root((distributed-systems))
    Inputs
      Course exercises
      Lecture notes PDF
      Python runtime
    Outputs
      Exercise simulations
      Study notes
    Use Cases
      Self-study companion
      Practice consensus algorithms
      Reproduce textbook exercises
    Tech Stack
      Python
      CLI

Things people build with this

USE CASE 1

Follow along with Kleppmann's distributed systems lectures and run the Python exercises locally.

USE CASE 2

Study a worked solution to the FIFO links over reliable unordered links exercise.

USE CASE 3

Use as a starting template for your own implementations of Raft, two-phase commit, or eventual consistency.

Tech stack

Python

Getting it running

Difficulty · easy Time to first run · 5min

No requirements file; each exercise directory has its own main.py that runs under any Python 3.

License is not stated in the available content.

In plain English

This repo is a personal study notebook by a learner working through a distributed systems course taught by Martin Kleppmann at the University of Cambridge in the 2021 to 2022 academic year. Kleppmann is a well known author on the subject, and the course covers how computers spread across a network coordinate with each other when messages can be lost, delayed, or arrive out of order. The repo is meant to hold the author's own Python implementations and simulations of the exercises from that course. The README starts with a table of the eight course chapters and the topics each one covers, ranging from basic ideas like Remote Procedure Calls and the famous two generals problem, through clocks and event ordering, broadcast protocols, replication, the Raft consensus algorithm, two phase commit, eventual consistency, and ending with case studies including Google's Spanner database. The table is a faithful reproduction of the course outline rather than original commentary. After the course outline there is an exercise index. At the time of writing it contains a single completed exercise, number 4 from chapter 2, on the topic of FIFO links built on top of reliable but unordered links. The directory for that exercise is included in the repo and there is a note saying more exercises will be added as the author works through the course. The README also links to the official course materials: a PDF of the lecture notes, the YouTube playlist of the video lectures, and the course web page on the Cambridge Computer Laboratory site. These links are pointers to the upstream teaching material rather than anything hosted in the repo itself. Running an exercise is straightforward. Each exercise is described as a self contained Python project, so the user changes into its directory and runs python3 main.py. There are no install instructions, no requirements file mentioned, and no tests in the README. The repo has zero stars, is written in Python, and is best read as one student's in progress study log rather than a finished educational resource.

Copy-paste prompts

Prompt 1
Walk me through the FIFO links over reliable unordered links exercise in Prayag2003/distributed-systems and how the Python main.py simulates it.
Prompt 2
Write a new exercise directory in Prayag2003/distributed-systems that implements the two generals problem in Python.
Prompt 3
Sketch a Raft consensus exercise that would fit alongside the existing folder structure of Prayag2003/distributed-systems.
Prompt 4
Convert the FIFO links exercise from this repo into a runnable asyncio version with three nodes.
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.