В моей работе с библиотекой реактивной работы с сокетами есть небольшая история вопроса.
Библиотека сокетов в основном основана на реактивной библиотеке с именем Monix
(аналогично ReactiveX). В Monix рекомендуется обрабатывать противодавление по типу Ack
(расширяет будущее), который выдает следующее сообщение при обработке текущего сообщения. Это хороший механизм для защиты системы от спешных сообщений.
В настоящее время проектируется, каждое сокетное соединение является Observable (или Потоком), Observable создаст сообщение протокола при разборе потока сетевых байтов TCP / IP, а затем передаст сообщение протокола подписчику.
Проблема в том, что библиотека Monix могла оказывать противодавление только для каждого наблюдаемого. Если учесть, что есть тысячи подключенных клиентов, то в облаке будет так много Наблюдаемых и обратное давление не имеет смысла.
Итак, как спроектировать механизм противодавления для такой реактивной системы с точки зрения глобальной системы, отличной от единственной наблюдаемой?
Спасибо