Plain-language explanation.
A distributed system is a collection of computers that work together to appear as a single coherent system to users. The internet, cloud computing, databases like Google Spanner, and platforms like WhatsApp all run on distributed systems. The challenge is making them reliable, consistent, and fast when components can fail.
Core concepts and standard treatment.
Core distributed systems concepts: the CAP theorem (Brewer, 2000 — you can only guarantee two of three: Consistency, Availability, Partition tolerance; PACELC extension — Abadi — also trades latency vs consistency in no-partition case), consistency models (strong consistency — linearisability — appears atomic; sequential consistency; causal consistency; eventual consistency — BASE — Basically Available, Soft state, Eventually consistent — DynamoDB, Cassandra), failure models (crash-fail vs Byzantine failures; partial failures; network partitions; split-brain), time and clocks (logical clocks — Lamport timestamps; vector clocks; TrueTime — Google Spanner — atomic clocks + GPS; happens-before relation), and replication (leader-follower vs leaderless; quorum reads/writes — Dynamo; conflict resolution — last-write-wins vs CRDTs — conflict-free replicated data types).
Deeper theory, debates and edge cases.
Advanced distributed systems covers consensus algorithms (Paxos — Lamport 1989/2001 — single-decree paxos, multi-paxos; Raft — Ongaro & Ousterhout 2014 — more understandable; leader election, log replication, safety — used in etcd, CockroachDB; Viewstamped Replication; Byzantine fault tolerance — PBFT — Practical Byzantine Fault Tolerance — blockchain consensus — PoW vs PoS vs PBFT), distributed storage systems (Google Bigtable — LSM-tree, SSTable; Spanner — TrueTime + Paxos — external consistency; DynamoDB — consistent hashing + virtual nodes + sloppy quorums + vector clocks; HDFS — Hadoop Distributed File System — namenode/datanode — rack-aware replication), and stream processing (Apache Kafka — log-based messaging — exactly-once semantics; Apache Flink — stateful stream processing — watermarks, windows, checkpointing; Apache Spark Structured Streaming; Samza; the Lambda vs Kappa architecture).
How it is applied in practice.
At the distributed systems engineer and principal architect level, practitioners contribute to OSDI, SOSP, EuroSys, and VLDB; design and operate globally distributed databases (CockroachDB — serialisable transactions globally; Google Spanner — SQL with external consistency; YugabyteDB; TiDB; Vitess — MySQL horizontal sharding at YouTube scale); implement distributed transaction protocols (two-phase commit — 2PC; saga pattern — compensating transactions — Uber's Cadence/Temporal; event sourcing + CQRS at scale); build large-scale messaging platforms (Kafka at LinkedIn — 1+ trillion messages/day; Pulsar at Yahoo/StreamNative; Apache BookKeeper — durable storage); and contribute to cloud-native distributed patterns (service mesh — Istio traffic management; distributed tracing — OpenTelemetry; chaos engineering — chaos mesh; capacity planning — queueing theory applied to microservices — Brendan Gregg's USE method).