Что означает термин противодавление в Rxjava?

Я новичок в RxJava, и мне интересно, что означает "противодействие".

Означает ли это, что производитель оказывает давление за спиной потребителя?

Или это означает, что потребители оказывают давление на производителей? (Давление в противоположном направлении)


person ohlab    schedule 01.10.2017    source источник
comment
Последний. Потребителю нужно больше времени для обработки, поэтому производитель замедляется. Обратное давление, как правило, плохо, поскольку для его реализации требуются побочные эффекты, что может вызвать всевозможные логические проблемы. Без обратного давления Rx работает чисто функционально.   -  person Enigmativity    schedule 02.10.2017
comment
Спасибо тебе. Есть еще один вопрос. Это не важно... Я думаю, что "Обратное управление" или "Обратный сигнал" более подходят, чем "Обратное давление". Почему люди использовали слово «давление»? Предложение о том, что потребитель давит на производителя, кажется преувеличением.   -  person ohlab    schedule 07.10.2017
comment
Я думаю, что идея давления заключается в том, что производитель давит на потребителя. Таким образом, обратное давление — это способность потребителя оказывать давление на производителя.   -  person Enigmativity    schedule 08.10.2017


Ответы (3)


Противодействие RxJava

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

Как управляются и контролируются неиспользованные элементы, которые испускаются наблюдаемыми, но не потребляются подписчиками, — это то, с чем имеет дело стратегия обратного давления.

Поскольку для обработки противодавления требуются системные ресурсы, вам необходимо выбрать правильную стратегию противодавления, соответствующую вашим требованиям.

Ссылка на дополнительную информацию

person akhilesh0707    schedule 07.03.2018

Я много читал о обратном давлении, но ничто меня не удовлетворяло, пока я не наткнулся на сообщение Йонаса (соавтора реактивный манифест). Я надеюсь, что это прояснит ваши сомнения относительно обратного давления.

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

person Abdullah Khan    schedule 23.10.2019

Рассмотрим ситуацию, когда у вас есть огромное количество данных, например. датчик выдает огромное количество данных, которые передаются с высокой скоростью.
В таком сценарии нам нужно противодавление , которое простыми словами является просто способом обработки элементов, которые не могут быть обработаны.
Теперь, чтобы уменьшить это давление, мы явно указываем различные стратегии обратного давления, такие как

  • Отбрасывание (BackpressureStrategy.DROP): эта стратегия отбрасывает элементы,
    когда не может справиться с большим объемом, чем позволяет
  • Последний (BackpressureStrategy.LATEST): если нисходящий поток не может справиться с потоком элементов, он прекращает отправку и ждет, пока он снова не станет доступным. Он продолжает отбрасывать элементы, кроме последнего, который прибыл, и отправляет последний, когда нисходящий поток доступен.
  • Буфер (BackpressureStrategy.BUFFER): Сохраняйте элементы в буфере до тех пор, пока их можно будет обработать.

Демистификация RxJava Backpressure на Android в Uber Engineering

person Rakhi Dhavale    schedule 26.10.2019