Week 5: Distributed Systems
1. Distributed Computing Fundamentals:
- Lecture 1: Introduction to Distributed Systems
- Define distributed systems and explain their importance in modern computing.
- Compare it to a team of people working together remotely.
- Lecture 2: Key Characteristics of Distributed Systems
- Discuss decentralization, concurrency, and fault tolerance.
- Explore how these characteristics impact system design.
- Lab 1: Analyzing Distributed Systems
- Study the architecture of a distributed social media platform and identify components that make it distributed.
- Discuss potential challenges and benefits.
2. Distributed Databases:
- Lecture 3: What Are Distributed Databases?
- Introduce the concept of distributed databases, where data is spread across multiple nodes.
- Example: A global e-commerce platform with data centers in different regions.
- Lecture 4: Types of Distributed Databases
- Explore replicated databases, sharded databases, and distributed cache systems.
- Discuss when to use each type.
- Lab 2: Designing a Distributed Database
- Given a scenario, design a distributed database system to meet scalability and availability requirements.
- Consider data partitioning and replication.
3. Consistency Models (e.g., Eventual Consistency):
- Lecture 5: Consistency in Distributed Systems
- Explain why maintaining consistency in a distributed system is challenging.
- Introduce the concept of eventual consistency.
- Lecture 6: Eventual Consistency Explained
- Dive into eventual consistency, where all replicas of data will converge to the same value over time.
- Discuss trade-offs between strong and eventual consistency.
- Lab 3: Experimenting with Eventual Consistency
- Simulate eventual consistency in a simple distributed database.
- Observe how updates propagate across replicas.
4. Fault Tolerance and Distributed Consensus (e.g., Raft):
- Lecture 7: Fault Tolerance in Distributed Systems
- Discuss the inevitability of failures in distributed systems.
- Explain the need for fault tolerance to ensure system reliability.
- Lecture 8: Distributed Consensus Algorithms
- Introduce distributed consensus algorithms like Raft and Paxos.
- Explain how they ensure consistency and fault tolerance.
- Lab 4: Simulating Fault Tolerance with Raft
- Implement a simplified Raft consensus algorithm in a distributed system simulator.
- Explore how it handles node failures and maintains data consistency.
Homework Assignment:
- Research and document a real-world example where the use of distributed systems significantly improved an application’s scalability and reliability.
Read More System Design
Architectural Patterns in System Design
Scalability and Performance in System Design
Database Design in System Design
Distributed Systems in System Design
System Integration and APIs in System Design
Cloud Computing in Sestem Design
Containerization and Orchestration in System Design
High Availability and Disaster Recovery