SYSTEM ATLASЗагрузка материала

Backpressure

Backpressure

Получатель должен иметь возможность замедлять или ограничивать входящий поток при перегрузке.

Простыми словами

Производитель выдаёт данные быстрее, чем получатель успевает их обработать. Очередь растёт, память заканчивается, а задержка становится непредсказуемой. Обратное давление позволяет получателю сообщить, сколько данных он готов принять, - как касса, которая открывает вход следующему покупателю только после освобождения места. Это нужно, чтобы перегрузка не превращалась в потерю данных или отказ всей системы.

Формальное определение

Обратное давление - механизм управления потоком, при котором потребитель явно или косвенно ограничивает скорость производителя в соответствии со своей текущей пропускной способностью.

Механизм действия

Потребитель выдаёт разрешения, подтверждения или лимит спроса. Производитель не посылает больше разрешённого объёма либо замедляется при заполнении буфера. Так скорость поступления данных связывается с фактической скоростью обработки.

Пример в работе

Нерабочий подход

Продолжать принимать работу, когда система уже не успевает ее обрабатывать.

Системный подход

Rate limit, bounded queues, отказ с понятным статусом или снижение качества обслуживания.

Ограничения

Обратное давление работает только если сигнал доходит до производителей и они способны замедлиться; иначе давление превращается в буферы, потери или отказ.

Источник

Reactive Streams Initiative, “Reactive Streams Specification”, 2015.

Первоисточник