Paxos Made Simple (2001) [pdf](lamport.azurewebsites.net) |
Paxos Made Simple (2001) [pdf](lamport.azurewebsites.net) |
For Paxos, I also recommend reading Paxos v Raft, Have we reached consensus on distributed consensus ? by Heidi Howard et al. It explains Multi-paxos by using the style and abstractions from the Raft paper, which makes it much more understandable. Paxos can be intimidating but this was the paper that made it click for me.
I highly recommend doing the labs from 6.824.
[1]: https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-W...
- L9: Paxos Simplified https://www.youtube.com/watch?v=SRsK-ZXTeZ0
- Slides https://docs.google.com/presentation/d/1ossDCdSERSZmJXKfiCwD...
Check out https://www.distributedsystemscourse.com/ by Chris Colohan for more info.
The original paper then quickly becomes super convoluted by continuing to explain the algorithm by overextending that allegory. By the mid point of it I felt pretty exhausted.
It was then I learnt that the original paper was lying in limbo for nearly a decade until it was finally published.
Then at a conference, Lamport got tired of people telling him his original was difficult to grasp and so came this simplified explanation.
I still have my notes on the paper somewhere in my Obsidian. I should publish those.
Ha! That's very clever, author. You clearly have a similar sense of humor to...oh, it's Leslie Lamport again.
Obviously for the assignments themselves, I use AI sparingly. Mostly as a sounding board when I have doubts or to know how to do something in golang, since it isn’t my primary programming language.
Note, I am not asking for solutions like “implement Append Entries RPC”, the solutions are public so AI could probably implement everything. My workflow is to implement it first, debug test failures, go through each individual test and then come up with clarifying Q’s, such as the one below,
In Raft paper by Ongaro et al, for the below condition, If there exists an N such that N > commitIndex, a majority of matchIndex[i] ≥ N, and log[N].term == currentTerm: set commitIndex = N (§5.3, §5.4).
Is commitIndex changed only when we receive a successful reply for Append Entries ?
Lastly I have an AGENTS.md that prohibits GPT from giving solutions directly, that would defeat the purpose of doing the assignments. It was used in one of Stanford’s GenAI course, look it up.