Here is a collection of the resources I've been using to learn about distributed systems.
Books
- Designing Data-Intensive Applications by Martin Kleppmann ✅
Papers
- Spanner: Google’s Globally-Distributed Database
- Dynamo: Amazon’s Highly Available Key-value Store
- MapReduce: Simplified Data Processing on Large Clusters
- The Google File System
- Raft
- ZooKeeper: Wait-free coordination for Internet-scale systems
- Grove: a Separation-Logic Library for Verifying Distributed Systems
- Chardonnay: Fast and General Datacenter Transactions for On-Disk Databases
- No compromises: distributed transactions with consistency, availability, and performance
- Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service
- Ownership: A Distributed Futures System for Fine-Grained Tasks
- Scaling Memcache at Facebook
- On-demand Container Loading in AWS Lambda
- Boki: Stateful Serverless Computing with Shared Logs
- Secure Untrusted Data Repository (SUNDR)
- Practical Byzantine Fault Tolerance
- Bitcoin: A Peer-to-Peer Electronic Cash System
- Kafka: a Distributed Messaging System for Log Processing
- Bigtable: A Distributed Storage System for Structured Data
- Cassandra - A Decentralized Structured Storage System
- TAO: Facebook’s Distributed Data Store for the Social Graph
- Design patterns for container-based distributed systems
- Large-scale cluster management at Google with Borg
Courses