1.
Before Getting Started
1 Lesson
This chapter introduces the distributed systems course focusing on key concepts, basic principles, and algorithms for beginners.
2.
Introduction to Distributed Systems
10 Lessons
This chapter covers the basics of distributed systems including common fallacies and its impact on system performance, scalability, and availability.
3.
Basic Concepts and Theorems
18 Lessons
The chapter explores core principles of distributed systems like partitioning, replication, consistency models, CAP theorem, and Quorums.
4.
Distributed Transactions
2 Lessons
This chapter covers distributed transactions ensuring reliable, atomic operations across multiple nodes while managing complexities of consistency.
5.
Achieving Isolation
6 Lessons
The chapter explores methods to achieve isolation in distributed systems, including pessimistic and optimistic concurrency control techniques.
6.
Achieving Atomicity
5 Lessons
The chapter discusses various protocols like 2PC, 3PC, and quorum-based methods to ensure atomicity in distributed systems.
Hard to Guarantee Atomicity2-Phase Commit (2PC)3-Phase Commit (3PC)Quorum-Based Commit ProtocolQuiz7.
Concluding Distributed Transactions
2 Lessons
This chapter ties together distributed transaction concepts and introduces long-lived transactions and sagas.
How It All Fits TogetherLong-Lived Transactions and SagasThe chapter explores the consensus problem in distributed systems, focusing on algorithms like Paxos and Raft, their complexities, and practical applications.
Defining the Consensus ProblemFLP ImpossibilityThe Paxos AlgorithmIntricacies of PaxosPaxos in Real LifeReplicated State Machine via ConsensusDistributed Transactions via ConsensusAn introduction to RaftCommunication among Raft NodesRaft's ImplementationStanding on the Shoulders of GiantsQuizThis chapter explores the concept of time in distributed systems including logical clocks for event ordering and accuracy.
What is Different in a Distributed System?A Practical PerspectiveA Theoretical PerspectiveLogical ClocksQuizThe chapter delves into event ordering in distributed systems, exploring causality, logical clocks, and snapshot problems for achieving consistency.
Total and Partial OrderingThe Concept of CausalityLamport ClocksVector ClocksVersion VectorsDotted Version VectorsDistributed Snapshot ProblemSolving the Distributed Snapshot ProblemPhysical and Logical Time: Closing ThoughtsQuizThe chapter teaches network components and protocols essential for distributed systems communication, focusing on layered architecture.
IntroductionThe Physical LayerThe Link Layer - ServicesThe Link-Layer ProtocolsThe Network LayerThe Transport LayerThe Application LayerTaking a Step BackQuizThis chapter emphasizes critical security concerns in distributed systems, focusing on authentication, confidentiality, and integrity to protect against malicious threats.
IntroductionAuthenticationConfidentialityIntegrityA Cryptography PrimerSymmetric/Asymmetric Encryption and Digital SignaturesQuiz13.
Security Protocols
5 Lessons
The chapter explores distributed system security concepts like TLS, PKI, web of trust, and OAuth, ensuring secure communication and authorization.
Transport Layer Security (TLS)Public-Key Infrastructure (PKI)Web of Trust (PGP)OAuth ProtocolQuiz14.
From Theory to Practice
1 Lesson
The chapter introduces various distributed systems, focusing on their applications and design evolution, while referencing previous learned principles.
Introduction15.
Case Study 1: Distributed File Systems
5 Lessons
The chapter explores distributed file systems, focusing on GFS and HDFS, their architectures, file operations, and consistency models.
Hadoop Distributed File System and Google File SystemCreating and Reading FilesWriting and Deleting FilesGFS Consistency ModelQuiz16.
Case Study 2: Distributed Coordination Service
6 Lessons
The chapter explores distributed coordination services, focusing on Zookeeper's structure, guarantees, and its efficient protocol for managing distributed systems.
Coordination ServiceZookeeperGuarantees Provided by ZookeeperZookeeper's ZAB ProtocolExamples of Powerful Primitives by Zookeeper APIQuiz17.
Case Study 3: Distributed Data Stores
16 Lessons
This chapter covers distributed data stores like BigTable, HBase, Cassandra, Spanner, and FaunaDB, including their architectures and consistency models.
IntroductionBigTable/HBase ArchitectureAppends and Read Operations in HBaseGuarantees Provided by HBaseCassandra's Data ModelCassandra's Cluster Internode CommunicationCassandra's Consistency LevelsLinearizability Violations in CassandraLinearizability Guarantees by CassandraCassandra Performing Queries EfficientlySpanner's Data ModelSpanner's ArchitectureSpanner using TrueTimeSpanner OperationsFaunaDBQuiz18.
Case Study 4: Distributed Messaging System
5 Lessons
The chapter focuses on Apache Kafka's architecture, configuration, messaging guarantees, and transactional capabilities within distributed systems.
Introduction to KafkaKafka LeversKafka's Messaging GuaranteesTransactions, Storage Layout, and other GuaranteesQuiz19.
Case Study 5: Distributed Cluster Management
3 Lessons
The chapter covers Kubernetes’ architecture and components, highlighting resource coordination and network communication.
KubernetesComponents of Manager and Worker NodesQuiz20.
Case Study 6: Distributed Ledger
5 Lessons
The chapter explores Corda's distributed ledger architecture, data model, compatibility, and its mechanism for ensuring secure, trustworthy transactions.
Introduction to CordaCorda's Data ModelCorda's ArchitectureBackwards Compatibility provided by CordaQuiz21.
Case Study 7: Distributed Data Processing Systems
10 Lessons
This chapter covers MapReduce, Apache Spark, and Apache Flink, including their architectures and perks of batch and stream processing.
IntroductionIntroduction to MapReduceMapReduce's Manager-Worker ArchitectureIntroduction to Apache SparkDAG of Stages in Apache SparkPerks of Apache SparkApache FlinkTime and Watermarks in FlinkFailure Recovery in FlinkQuiz22.
Practices & Patterns
1 Lesson
This chapter introduces best practices and patterns for building and operating distributed systems.
Introduction23.
Communication Patterns
4 Lessons
This chapter discusses various data exchange techniques in distributed systems encompassing serialization, communication types, models and their tradeoffs.
Creating and Parsing DataTransfer of DataDatastores for Asynchronous CommunicationCommunication Models24.
Coordination Patterns
1 Lesson
This chapter discusses coordination patterns like orchestration and choreography to enable collaboration in distributed systems.
Coordination Patterns25.
Data Synchronization
3 Lessons
This chapter focuses on data synchronization, event sourcing, and change data capture (CDC) for maintaining data integrity across distributed systems.
Data SynchronisationEvent SourcingChange Data Capture (CDC)26.
Shared-nothing Architectures
2 Lessons
This chapter teaches how shared-nothing architecture enhances scalability and availability while minimizing sharing.
Sharing Problems and their SolutionBenefits and Drawbacks27.
Distributed Locking
2 Lessons
This chapter teaches distributed locking, including leases and fencing techniques, and preventing safety risks to ensure fault tolerance and consistency.
Leases in Distributed SystemsPreventing Safety Risks in Leases28.
Compatibility Patterns
2 Lessons
The chapter highlights the importance of backwards compatibility in distributed systems, emphasizing techniques for effective maintenance during updates.
Backwards CompatibilityMaintaining Backwards Compatibility29.
Dealing with Failure
6 Lessons
This chapter focuses on failure-handling techniques in distributed systems, such as retries and backpressure, and mitigating failure impacts.
Failure Handling TechniquesApplying Failure Handling TechniquesRetriesContaining Impact of FailureBackpressureReacting to Backpressure30.
Distributed Tracing
1 Lesson
This chapter discusses how distributed tracing enahcnes troubleshooting in distributed systems through unique identifiers and performance logs.
Recording Program's Execution31.
Concluding this Course
2 Lessons
The chapter summarizes the essential aspects of distributed systems, emphasizing practical applications, key concepts, and further exploration opportunities.
Recap of the CourseSome More Things to Discover