Grokking The System Design Interview
Having recently completed the “Grokking the System Design Interview” course on educative.io, which I highly recommend. I developed an interest in how large, scalable systems work. Which is good because this kind of deep knowledge is rewarded in the market and it has certainly helped me in my interviews.
To continue learning I’ll go through the papers referenced in the course and provide my summaries on the following:
-
Dynamo - Highly Available Key-value Store
-
Kafka - A Distributed Messaging System for Log Processing
-
Consistent Hashing - Original paper
-
Paxos - Protocol for distributed consensus
-
Concurrency Controls - Optimistic methods for concurrency controls.
-
Gossip protocol - For failure detection and more.
-
Chubby - Lock service for loosely-coupled distributed systems
-
ZooKeeper - Wait-free coordination for Internet-scale systems
-
MapReduce - Simplified Data Processing on Large Clusters
-
Hadoop - A Distributed File System
-
BigTable - A Distributed Storage System for Structured Data
-
Cassandra - A Decentralized Structured Storage System