Why do I need to learn about distributed systems?
Distributed systems provide the foundation for understanding the theories and techniques behind cloud computing and blockchain technology.
The architectures, protocols, and algorithms introduced in distributed systems are also necessary for creating complex software.
What can I do after finishing learning distributed systems?
You will be able to design software that can
- tolerate faults,
- shard data,
- handle massive number of requests, and
- perform expensive computations.
You will also be prepared to learn about cloud computing and blockchain technology.
What should I do now?
First, please audit this course to familiarize yourself with the core concepts and protocols of distributed systems: Distributed Systems, UC Santa Cruz Baskin School of Engineering, 2021.
Afterward, please audit the course and read the books below to learn how to design large-scale distributed systems:
- MIT 6.824, Distributed Systems, Spring 2020
- Maarten van Steen and Andrew S. Tanenbaum (2023). Distributed Systems. Maarten van Steen
- Martin Kleppmann (2017). Designing Data-Intensive Applications – The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. O’Reilly Media
Terminology Review:
- Fault Tolerance
- Consistency
- System Models
- Failure Detectors
- Communication
- Ordering
- State Machine Replication
- Primary-Backup Replication
- Bully Algorithm
- Ring Election
- Multi-Leader Replication
- Leaderless Replication
- Cristian’s Algorithm
- Berkeley Algorithm
- Lamport Clocks
- Vector Clocks
- Version Vectors
- Chain Replication
- Consensus
- FLP
- Raft
- Paxos
- Viewstamped Replication
- Zab
- Consistent Hashing
- Distributed Transactions
- ACID
- Two-Phase Commit
- Three-Phase Commit
- Serializability
- Two-Phase Locking
- Distributed Locks
- CAP
- Consistency Models
- Linearizability
- Distributed Architectures
- Distributed Programming
- Hadoop
- Spark
- Tensorflow
- PyTorch
- Kubernetes
- Bitcoin
- Smart Contracts
After finishing distributed systems, please click on Topic 26 – Introduction to Cloud Computing to continue.