Course topics
Introductory part: a short overview of the basics of distributed systems, including
- Why Distributed Systems?
- Scalability, Performance, Availability properties
Topic 1: Network communication and Remote Procedure Calls
- Sync, Async communication
- Serialization and de-serialization
- RPC problem: Duplicate, Delay, Drop, Reorder
Topic 2: Failures
- Failure Models
- Messaging delivery semantics
Topic 3: Concurrency & Timing
- Shared-memory and concurrency
- Time and order, total and partial order
- Logical Clocks and happens-before relation
Topic 4: Replication
- Replication goals: high availability, performance
- Primary/Backup and Multi-Leader Replication
- Replication and Synchronicity
- Replication and Consistency
Topic 5: Consensus & Consistency
- Two Generals’ Problem, FLP theorem
- CAP theorem. BASE
- Consistency and Consensus
- Tunable Consistency
- Consistency Models
Topic 6: Availability & Consensus algorithms
- High availability, majority, leader election
- Replicated State Machine
- Consensus algorithms: Paxos, Raft, ZAB, … (overview)