Description
This course provides an architectural overview of well-known distributed systems. The primary goal is to extract important design details that will be useful in system design interviews. The course also includes a list of system design patterns that represent common design problems and their solutions developed over time by various distributed systems.
Syllabus :
1. Dynamo: How to Design a Key-value Store?
- High-level Architecture
- Data Partitioning
- Replication
- Vector Clocks and Conflicting Data
- The Life of Dynamo’s put() & get() Operations
- Anti-entropy Through Merkle Trees
- Gossip Protocol
- Dynamo Characteristics and Criticism
2. Cassandra: How to Design a Wide-column NoSQL Database?
- High-level Architecture
- Replication
- Cassandra Consistency Levels
- Gossiper
- Anatomy of Cassandra's Write Operation
- Anatomy of Cassandra's Read Operation
- Compaction
- Tombstones
3. Kafka: How to Design a Distributed Messaging System?
- Kafka: Introduction
- High-level Architecture
- Kafka: Deep Dive
- Consumer Groups
- Kafka Workflow
- Role of ZooKeeper
- Controller Broker
- Kafka Delivery Semantics
- Kafka Characteristics
4. Chubby: How to Design a Distributed Locking Service?
- High-level Architecture
- Design Rationale
- How Chubby Works
- File, Directories, and Handles
- Locks, Sequencers, and Lock-delays
- Sessions and Events
- Master Election and Chubby Events
- Caching
- Database
- Scaling Chubby
5. GFS: How to Design a Distributed File Storage System?
- High-level Architecture
- Single Master and Large Chunk Size
- Metadata
- Master Operations
- Anatomy of a Read Operation
- Anatomy of a Write Operation
- Anatomy of an Append Operation
- GFS Consistency Model and Snapshotting
- Fault Tolerance, High Availability, and Data Integrity
- Garbage Collection
- Criticism on GFS
6. HDFS: How to Design a Distributed File Storage System?
- High-level Architecture
- Deep Dive
- Anatomy of a Read Operation
- Anatomy of a Write Operation
- Data Integrity & Caching
- Fault Tolerance
- HDFS High Availability (HA)
- HDFS Characteristics
7. BigTable: How to Design a Wide-column Storage System?
- BigTable Data Model
- System APIs
- Partitioning and High-level Architecture
- SSTable
- GFS and Chubby
- Bigtable Components
- Working with Tablets
- The Life of BigTable's Read & Write Operations
- Fault Tolerance and Compaction
- BigTable Refinements
- BigTable Characteristics
8. System Design Patterns
- Bloom Filters
- Consistent Hashing
- Quorum
- Leader and Follower
- Write-ahead Log
- Segmented Log
- High-Water Mark
- Lease
- Heartbeat
- Gossip Protocol
- Phi Accrual Failure Detection
- Split Brain
- Fencing
- Checksum
- Vector Clocks
- CAP Theorem
- PACELC Theorem
- Hinted Handoff
- Read Repair
- Merkle Trees