System models: synchronous vs. asynchronous
Every distributed systems proof assumes a system model that bounds what can go wrong.
- Synchronous model: message delivery has a known upper bound ; clock drift is bounded; steps complete in bounded time. Rare in practice โ a GC pause or a busy NIC can blow the bound.
- Partially synchronous model (Dwork-Lynch-Stockmeyer): the system is eventually synchronous โ bounds exist but you don't know when they kick in. Matches real WANs and cloud networks.
- Asynchronous model: no timing guarantees whatsoever. Messages can be delayed arbitrarily. Hardest to work with โ algorithms that are correct here are correct everywhere.
Most production consensus protocols (Raft, Paxos) are designed for partial synchrony: they are safe (never return wrong answers) in an asynchronous model, but live (eventually return answers) only under partial synchrony.
