Как динамически определять узлы веб-сервера в кластере с балансировкой нагрузки?
Я реализую некоторые функции совместной работы в реальном времени в приложении на основе веб-API ASP.NET, используя WebSockets, и все работает нормально, когда приложение развернуто на одном веб-сервере.
Когда он развертывается в ферме за программным (или аппаратным) балансировщиком нагрузки, я хотел бы реализовать шаблон pub-sub, чтобы любые изменения, происходящие на одном из веб-серверов, вызывали ту же логику для проверки и передачи этих изменений через веб-сокет. клиентам, подключенным к любому из других веб-серверов.
Я понимаю, что это может быть сделано, если есть дополнительный слой, использующий RabbitMQ, Redis или какой-либо такой компонент публикации / подписки или обмена сообщениями.
Но есть ли способ использовать широковещательную рассылку DNS или TCP или что-то, что уже доступно на Windows Server/IIS, для публикации сообщения на всех других одноуровневых веб-серверах в кластере?
1 ответ
Нет.
Но вы можете использовать MSMQ вместо RabbitMQ, но это не очень поможет, поскольку это очередь, а не публикация / публикация, поэтому игнорируйте это.
Если вы используете SignalR, есть много документов о том, как масштабировать, например, Введение в Scaleout в SignalR.
Даже если это не SignalR, вы можете получить некоторые идеи оттуда.