Для приложения чата я использую Azure-архитектуру с SignalR, с веб-ролью, действующей в качестве сервера SignalR (сообщения не являются широковещательным типом, но предназначены для конкретного пользователя/клиента).SignalR scaleout с лазурным сценарием для чата
Я хочу масштабировать сервер SignalR вместе с веб-ролями, чтобы обрабатывать тяжелую загрузку пользователя. Несмотря на то, что документация SignalR не рекомендует использовать предварительно выработанные методы масштабирования SignalR с использованием объединительной платы (Redis, Service bus) для таких случаев, когда количество сообщений увеличивается по мере подключения большего числа пользователей (или в сценарии, зависящие от пользовательского события). В нем явно указывается: «Клиент-клиент» (например, чат): в этом случае объединительная плата может быть узким местом, если количество сообщений масштабируется с количеством клиентов, то есть, если скорость сообщений растет пропорционально больше клиентов присоединяются ».
Вопрос: Кто-нибудь знает любой заказ масштабного решения для такого высокочастотного случая, который не толкнуть сообщения каждого экземпляра сервера или другого масштабного решения?
Уже смотрел всюду в документах SignalR и связанных с ними видео, но не мог найти ничего, кроме слова «filter-bus», которое не было объяснено, что это такое и как его следует использовать.
* «отключите клиента и подключите его к соответствующему экземпляру веб-роли». * Как вы достигли этого в Azure? Скажем, у вас есть 4 экземпляра роли, как вы перенаправляете клиента для подключения к правильному экземпляру? У экземпляров есть только частный IP-адрес, поэтому мы не можем перенаправлять на основе открытого IP-адреса. Также мы не можем продолжать отклонять запросы к другим экземплярам, если IP-адрес не соответствует. Что произойдет, если сервер перезагрузится или что-то еще хуже? Был бы признателен, если бы вы могли дать немного больше подробностей. – KRoy