Scaling Building Blocks
Chaar blocks 90% HLD problems solve kar dete hain. LOAD BALANCER traffic baantta hai. CACHE read load ghataata hai (Redis, CDN). MESSAGE QUEUE write spikes absorb karti hai aur services decouple karti hai (Kafka, SQS). SHARDING + REPLICATION database ko horizontally scale karta hai.
Har block ka COST bhi batao. Cache staleness laata hai. Queue eventual consistency laati hai. Sharding cross-shard joins mushkil kar deti hai. Replication replication lag deti hai. Jo candidate sirf fayde ginaata hai wo junior lagta hai; jo cost bhi bolta hai wo senior lagta hai.
Client
→ CDN (static assets)
→ Load Balancer
→ API Gateway (auth, rate limit)
→ Service (stateless, horizontally scalable)
↔ Cache (Redis) // read-heavy path
→ Message Queue (Kafka) // write spikes + async work
→ Database (sharded + read replicas)- Load balancer, cache, queue, sharding — 90% problems inhi se bante hain
- Har block ka trade-off bolo, sirf fayda nahi
- Simple se shuru karo, bottleneck dikhne par hi block add karo
RANGE-BASED sharding (A-M ek shard, N-Z doosra) range queries ke liye achhi hai par HOTSPOT banati hai — agar zyadatar users "S" se shuru hote hain to ek shard mar jaayega. HASH-BASED sharding data barabar baantti hai par range queries todti hai.
Sabse bada practical problem RESHARDING hai — shards badhane par saara data dobara distribute karna padta hai. CONSISTENT HASHING isi ka jawab hai: naya node add karne par sirf thoda data move hota hai, poora nahi.
// Hash sharding ka problem
shard = hash(key) % N
// N badalne par LAGBHAG SAARA data move hoga
// Consistent hashing — sirf padosi ka data move hota hai
// Nodes ko ek ring par rakho, key ring par clockwise
// agle node par jaati haiCACHE-ASIDE sabse common hai: app pehle cache dekhta hai, miss par DB se laakar cache mein daalta hai. WRITE-THROUGH mein write cache aur DB dono mein ek saath jaati hai (consistent par slow). WRITE-BEHIND mein pehle cache, baad mein DB (fast par data loss ka risk).
Do failure modes zaroor jaano. CACHE STAMPEDE — popular key expire hote hi hazaaron requests ek saath DB par jaati hain; fix hai lock ya probabilistic early refresh. CACHE PENETRATION — jo key exist hi nahi karti uske liye har baar DB hit hota hai; fix hai null values ko bhi cache karna ya bloom filter.