SHEET · 13-LETTERS-THAT-WOULDNT-SEND

Letters that Wouldn't Send

Heavy write load to a slow consumer overflows the queue and you can't tell what was lost. Wire a dead-letter queue from the queue's overflow path to a database for later inspection.

SLA · success ≥ 50.0% · p95 ≤ 1000 ms · load ~1200 req/s
📖 CONCEPT← DRAWING SET
Add a client — every system needs somewhere for traffic to come from.
PARTS · CATALOG
Components
Drag onto the sheet, or click to add. Hover any item for details.
COMPUTE
👤 Client
A client represents the users (or other systems) hitting your service. In Flow, every tick each client fires off a batch of requests into the system.
Think: people pressing 'Send' in an app.
LatencyHow long this component spends handling each request. ≈ 0 ticks in simulation time. Jitter ±0% adds realistic variation.0 ms
CapacityMax requests this component can work on at the same time. no concurrency limit, derived from capacity ÷ latency. If more requests arrive than this, they get dropped.unbounded
🖥️ Server
A server takes in a request, does work for a few milliseconds, then hands it off (to a database, cache, or back to the client). It can only handle so many requests at the same time — its capacity.
Think: a barista. Fast, but only one drink per hand at a time.
LatencyHow long this component spends handling each request. ≈ 3 ticks in simulation time. Jitter ±20% adds realistic variation.30 ms
CapacityMax requests this component can work on at the same time. ≈ 2667 req/s sustained, derived from capacity ÷ latency. If more requests arrive than this, they get dropped.80 concurrent
ROUTING
📬 Queue
A queue accepts messages from a producer and acknowledges them instantly — the producer doesn't wait for the consumer to do the work. The consumer pulls messages from the queue at its own pace. This lets a fast producer absorb bursts without overwhelming a slower consumer; the trade-off is eventual consistency (the producer doesn't know if the work succeeded).
Think: a kitchen ticket rail. Waiters drop orders on the rail and walk away; cooks pull tickets when they're free.
LatencyHow long this component spends handling each request. ≈ 1 tick in simulation time. Jitter ±5% adds realistic variation.10 ms
CapacityMax requests this component can work on at the same time. ≈ 20000 req/s sustained, derived from capacity ÷ latency. If more requests arrive than this, they get dropped.200 concurrent
DATA
🗄️ Database
A database persists data so it survives restarts. Reads and writes take longer than in-memory work, and databases handle fewer concurrent requests than servers, which makes them a common bottleneck.
Think: a filing cabinet. Reliable, but slower than your desk drawer.
LatencyHow long this component spends handling each request. ≈ 4 ticks in simulation time. Jitter ±15% adds realistic variation.40 ms
CapacityMax requests this component can work on at the same time. ≈ 3000 req/s sustained, derived from capacity ÷ latency. If more requests arrive than this, they get dropped.120 concurrent
Mini Map
Select a node to inspect it.
Press Validate or Run Simulation to see results.