RxJS: Back pressure

Что такое back pressure?

Back pressure — ситуация, когда Observable выдаёт данные быстрее, чем потребитель успевает их обрабатывать. Накапливаются необработанные данные, нагрузка на систему растёт. Стратегия back pressure — механизм, позволяющий системе справляться с нагрузкой, а не «падать».

Подходы делятся на:

  • Lossy (с потерями) — потребителю не нужны все данные.
  • Lossless (без потерь) — потеря данных может привести к ошибкам.

Как RxJS справляется

ОператорТипПоведение
debouncelossyЭмитит значение, только если в течение заданного времени не было нового.
throttlelossyПропускает значения в течение интервала (часть данных теряется).
bufferCountlosslessБуферизует значения до заданного количества, затем эмитит пачкой.
bufferTimelosslessБуферизует значения за интервал времени, затем эмитит пачкой.