Масштабирование Signalr с объединительной платой sql

Я просмотрел Введение в масштабирование в SignalR и < документация href = "https://www.asp.net/signalr/overview/performance/scaleout-with-sql-server" rel = "nofollow noreferrer"> SignalR Scaleout с SQL Server, но есть некоторые запутанные вещи для меня относительно того, как это на самом деле работает.

  1. Как объединительная плата идентифицирует все подключенные к ней серверы? Есть ли способ получить список подключенных серверов с объединительной платы?
  2. Если два сервера имеют два разных имени DNS (например: - abc.com и 123.com), но подключены к одной и той же объединительной плате sql, отправляются ли сообщения также на эти разные DNS-серверы? . Если это так, если клиент подключен к abc.com, но запрос отправлен на 123.com, будет ли он доставлен клиенту через abc.com?
  3. В документации сказано, что все серверы сохраняют сообщения в своем локальном кеше. Есть ли способ узнать, что конкретный сервер получил это сообщение, чтобы мы могли где-нибудь его зарегистрировать?

person janitha000    schedule 02.02.2017    source источник


Ответы (1)


  1. Объединительной платой в этом случае является SQL Server, когда сервер подключается к объединительной плате, он устанавливает соединение sql, и SQL знает, кто подключен, например, используйте хранимую процедуру sp_who.
  2. Это зависит от того, как вы отправляете свое сообщение. Если сервер отправляет сообщение всем клиентам и подключен к объединительной плате, сообщение сначала попадает на объединительную плату, а затем каждый подключенный сервер принимает сообщение и доставляет его своим клиентам. Тот же процесс происходит для группы, но сервер отправляет сообщение только клиентам в группе.
  3. Я не мог найти способ перехватить сообщение между тем, когда сервер получает сообщение с объединительной платы, и доставкой его клиенту. Поэтому я не думаю, что есть способ зарегистрировать это. Если вы найдете способ, дайте мне знать.
person Jacob    schedule 11.05.2017