Pattern · seen in 2 breakdowns across 2 companies
Layered Admission Control
Guard a service with several layers that decide which requests to let in: cheap per-client rate limiters in front that fire all the time, and whole-system load shedders behind that fire only in emergencies.
The mechanism
The pattern at its core: two admission layers with different jobs - a per-client rate limiter for one noisy client, a whole-system load shedder for a surge from every client at once - and what goes wrong without the layer a situation needs.
Toggle a rate limiter and a load shedder against a noisy client and a system surge - each covers a job the other can't.
Definition
Protect a service with a stack of admission checks - the gates that decide which requests to let in - instead of just one. The stack has two kinds of layer:
- a rate limiter in front - scoped to one client at a time, it paces each client so no single one takes more than its share of capacity; usually, it fires constantly and cheaply
- a load shedder behind - scoped to the whole system, it decides under emergency which work deserves the capacity that is left; it fires rarely, only when the system is genuinely in trouble
Each layer has its own scope (one client versus the whole system), its own trigger (a client's pace versus the system's state), and its own firing rate. They are ordered so that each layer existing means the next one rarely has to fire. You can read the stack's health straight from the rejection counts: a healthy stack rejects orders of magnitude more at the front than at the back.
Two nearby patterns are worth telling apart:
- Priority-Aware Load Shedding decides the drop order within a single shedding decision - which requests to drop first; this pattern decides the stack of decisions, which mechanism gets to reject first and on what evidence
- Circuit Breaker cuts off the calls a service makes to a dependency when that dependency is failing; admission layers instead decide which incoming requests the service accepts
When it applies
Tradeoffs
The same move, 2 ways
Every row is a production system that bet on this pattern — the note says how, in that system's own terms.
Often used together
Patterns sharing breakdowns with this one — derived from co-occurrence, threshold ≥2 shared.
Problems this pattern answers
The walls where its breakdowns live — each opens the cross-company comparison.