Как реализовать обратное давление для реактивной сетевой библиотеки? - PullRequest
0 голосов
/ 20 апреля 2019

В моей работе с библиотекой реактивной работы с сокетами есть небольшая история вопроса.

Библиотека сокетов в основном основана на реактивной библиотеке с именем Monix (аналогично ReactiveX). В Monix рекомендуется обрабатывать противодавление по типу Ack (расширяет будущее), который выдает следующее сообщение при обработке текущего сообщения. Это хороший механизм для защиты системы от спешных сообщений.

В настоящее время проектируется, каждое сокетное соединение является Observable (или Потоком), Observable создаст сообщение протокола при разборе потока сетевых байтов TCP / IP, а затем передаст сообщение протокола подписчику.

Проблема в том, что библиотека Monix могла оказывать противодавление только для каждого наблюдаемого. Если учесть, что есть тысячи подключенных клиентов, то в облаке будет так много Наблюдаемых и обратное давление не имеет смысла.

Итак, как спроектировать механизм противодавления для такой реактивной системы с точки зрения глобальной системы, отличной от единственной наблюдаемой?

Спасибо

...