Learn
Practice
Newsletter
Toggle theme
Toggle theme
Toggle menu
Table View
Learn System Design
Progress
0/121 chapters
Introduction
0/3
What is System Design?
System Design Interviews
Top 30 System Design Concepts
Core Concepts
0/8
Scalability
Availability
Reliability
Consistency Models
CAP Theorem
Consistent Hashing
Latency vs Throughput
Single Point of Failure (SPOF)
Databases & Storage
0/12
Database Types
ACID Transactions
SQL vs NoSQL
Object Storage
Query Optimization
Change Data Capture (CDC)
Bloom Filters
Quad Tree
Redis Use Cases
Data Structures Used in Distributed Databases
How Databases Guarantee Durability
PostgreSQL Internal Architecture
Database Scaling Techniques
0/8
Top 15 Database Scaling Techniques
Indexing
Sharding
Vertical Partitioning
Sharding vs Partitioning
Replication
Denormalization
Data Compression
Caching
0/6
What is Caching?
Read-Through vs Write-Through Cache
Caching Strategies
Cache Eviction Policies
Distributed Caching
Content Delivery Network (CDN)
Networking
0/7
Load Balancers
Load Balancing Algorithms
Proxy vs Reverse Proxy
Domain Name System (DNS)
HTTP/HTTPS
TCP vs UDP
Checksums
APIs
0/11
What is an API?
Data Formats
API Architectural Styles
REST API Design
WebSockets
Webhooks
WebRTC
API gateways
Rate limiting
Idempotency
WebSocket Use Cases
Asynchronous Communications
0/3
Pub/Sub
Message Queues
Kafka Use Cases
Tradeoffs
0/9
Vertical vs Horizontal Scaling
Concurrency vs Parallelism
Long Polling vs WebSockets
Stateful vs Stateless Architecture
Strong vs Eventual Consistency
Push vs Pull Architecture
Monolith vs Microservices
Synchronous vs Asynchronous Communications
REST vs GraphQL
Distributed System Concepts
0/10
Heartbeats
Consensus algorithms
Leader Election
Distributed transactions
Gossip Protocol
Two-phase commit protocol
Three-phase commit (3PC)
Vector Clocks
CRDTs
Handling Failures in Distributed Systems
Microservices
0/5
Service Discovery
Sidecar Pattern
Circuit Breaker Pattern
SAGA Pattern
Service Mesh
Big Data Processing
0/5
Batch vs Stream Processing
ETL Pipelines
MapReduce
Data Lakes
Data Warehousing
Architectural Patterns
0/6
9 Software Architecture Patterns
Client-Server Architecture
Microservices Architecture
Serverless Architecture
Event-Driven Architecture
Peer-to-Peer (P2P) Architecture
Observability
0/3
Logging
Alert & Monitoring
Chaos Engineering
Security
0/5
Authentication & Authorization
OAuth / OAuth2
JWT
SSL/TLS
RBAC
Interview Tips
0/3
How to answer a System Design interview problem
15 Golden System Design Interview Tips
How to Choose the Right Database in System Design Interview
Interview Questions
0/17
Design a URL Shortener
Design WhatsApp
Design Instagram
Design Spotify
Design YouTube
Design Uber
Design Google Docs
Design Social Media News Feed System
Design a Proximity Service like Yelp
Design Distributed Rate Limiter
Design Real-Time Gaming Leaderboard
Design a Web Crawler
Design Scalable Notification Service
Design a Distributed Key-Value Store
Design a Scalable 'Likes' Counting System
Design Distributed Job Scheduler
Design Unique Id Generator
Design Unique Id Generator
Ashish Pratap Singh
10 min read
blog
Substack
How to Generate Unique IDs in Distributed Systems
Any distributed system that operates at scale often relies on unique ids.
Premium Article
Read on Substack
← Previous:
Design Distributed Job Sc...