Source: Scalable System Design PatternsThese notes condense the eight patterns described by Ricky Ho for building highly–scalable distributed systems. Each section captures the core idea, workflow, trade‑offs, and real‑world examples.
Pros | Cons |
---|---|
Easy to add capacity by adding workers | Dispatcher can become a bottleneck / SPOF (use multiple LBs + health‑checks) |
Supports zero‑downtime rolling deploys | Requires sticky sessions or external session store for stateful apps |
Pros | Cons |
---|---|
Linear speed‑up with number of shards | Tail‑latency of slowest shard dictates overall latency |
Simple concurrency model | Requires aggregation logic & partial‑result schema |
Pros | Cons |
---|---|
Easy parallelism per stage | End‑to‑end latency = Σ stage latencies |
Replace/scale individual filters independently | Queue size tuning & ordering guarantees needed |
Pattern | Concurrency Model | Typical Latency | Best For |
---|---|---|---|
Load Balancer | Parallel, single response | Low | Stateless microservices |
Scatter‑Gather | Fan‑out, aggregate | Medium | Sharded queries |
Result Cache | Lookup first | Sub‑ms (hit) | Read‑heavy workloads |
Shared Space | Shared mutable store | High / iterative | Collaborative reasoning |
Pipe‑Filter | Sequential stages | Per‑stage | ETL pipelines |
Map‑Reduce | Batch, two‑phase | Minutes+ | Massive offline jobs |
BSP | Iterative barriers | High | Graph processing |
Execution Orchestrator | DAG scheduling | Depends | Heterogeneous workflows |