One server, three ways to die — the single-node ceiling on capacity and throughput
A single server has three failure modes — disk full, throughput saturated, node dead — and any one of them ends your service.
Scene 01
One server, three ways to die
- Watch
- Try it
- Predict
- Capture
Watch a single box under steady load. The disk meter creeps upward, the throughput sparkline drifts toward the red ceiling. Nothing exotic — just one server, doing its job, getting closer to its limits.
Highlighted lines are the ones running in the diagram right now.
def put(key, value):if disk.free_bytes < len(value):raise DiskFull # capacity wallif cpu.utilization > 1.0 or io.queue_full():raise Saturated # throughput walldisk.append(key, value)heartbeat.tick()return OK# if the process dies between append and fsync,# the only copy of the bytes goes with the disk.
def observe(server):if not server.heartbeat.alive():return DEAD # data lost with the diskif server.disk.fill_ratio > 0.95:return CAPACITY_PRESSUREif server.throughput_ratio > 0.9:return SATURATEDreturn HEALTHY
Where this sits in Build a wide-column store (Cassandra / DynamoDB family)
Scene 01 of 13, in the Why distribute? act — One server has three ways to die — and bigger boxes never fix all three.. A single box hits a capacity wall, a throughput wall, and a death event — and your data is gone.
Up next. If one box has three ways to die, the obvious move is more boxes — so the very next question is how to split keys across them.
All 13 scenes in Build a wide-column store (Cassandra / DynamoDB family) · Every curriculum