AdvancedTopic 81 of 104Software & Computing
Distributed systems
Multiple machines cooperate, facing latency and failures.
In depth
Distributed systems coordinate many machines over unreliable networks: no shared clock, partial failures, variable latency. Issues: replication, partitioning, consistency, ordering (Lamport/vector clocks), failure detection, idempotence. Fallacies of distributed computing warn against assuming reliable networks.
Key points
- Fault tolerance
- Scalability
- Observability
ExampleA search engine shards its index over thousands of servers.
What is Distributed systems?
Multiple machines cooperate, facing latency and failures.
Why is it important to understand distributed systems?
Distributed systems spread work across machines, which gives scale and resilience but also brings new failure modes.
Why are distributed systems hard?
Messages can be delayed, lost or reordered, and machines fail independently, so the system must be designed to handle partial failure.
What is a network partition?
A split in the network that separates machines into groups which cannot communicate, which forces trade-offs in the design.
How is Distributed systems used in practice?
Typical applications include running a web service on many servers behind a load balancer, processing sensor data across a cluster of workers and replicating a database to a second site for disaster recovery.
What should I learn before Distributed systems?
Study "CAP theorem" first (topic 80 of 104 in Software & Computing). It covers the groundwork this topic builds on.
What are the key points of Distributed systems?
Fault tolerance. Scalability. Observability.
Can you give an example of Distributed systems?
A search engine shards its index over thousands of servers.
What comes after Distributed systems?
The next topic is "Consensus algorithms", which builds directly on this one.
How difficult is Distributed systems?
It is classed as Advanced in Software & Computing (topic 81 of 104). It is an advanced topic. It assumes you are comfortable with the intermediate topics in Software & Computing.