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.