advanced
Backpressure
Замедляйте producers или сбрасывайте работу, когда consumers, streams, очереди или зависимости не успевают безопасно.
Backpressure сигнализирует, что downstream не успевает — замедляет producers, сбрасывает нагрузку или отклоняет работу вместо бесконечного буфера и роста latency.
| Механизм | Пример | |----------|--------| | Bounded queue | Drop/reject при переполнении | | HTTP 503 + Retry-After | Клиент отступает | | Stream `pause()` | Node readable ждёт consumer | | Concurrency limit | Только N in-flight jobs |
if (queue.length >= MAX) return res.status(503).send('overloaded');
Здоровые системы **fail fast** при overload, а не принимают бесконечную работу. Сочетайте backpressure с метриками rejections и queue depth.
На интервью: отличие от rate limiting; backpressure в streams; каскадный сбой без shedding; graceful degradation.
Типовые ошибки: неограниченные in-memory buffers; retry storms после 503; нет координации overload между сервисами.
Компромисс — защита tail latency против отброшенной или отложенной работы.
Чеклист:
- Bounded buffers на каждом этапе.
- Shed load с понятными сигналами клиенту.
- Retries с jitter.
- Overload paths в load tests.