Сообщения и подключения в службе Azure SignalR

Модель выставления счетов для Служба Azure SignalR основана на количестве подключений и количестве исходящих сообщений из службы. В этой статье объясняется, как сообщения и подключения определяются и учитываются при выставлении счетов.

Форматы сообщений

Служба Azure SignalR поддерживает те же форматы, что и служба SignalR для ASP.NET Core: JSON и MessagePack.

Размер сообщения

Следующие ограничения применяются для сообщений Служба Azure SignalR:

  • Клиентские сообщения:
    • Для длительных опросов или событий на стороне сервера клиент не может отправлять сообщения размером более 1 МБ.
    • Нет ограничения размера для WebSocket для службы.
    • Сервер приложений может задать ограничение для размера клиентского сообщения. Значение по умолчанию — 32 КБ. Дополнительные сведения см. в разделе "Вопросы безопасности" в ASP.NET Core SignalR.
    • Для бессерверных размер сообщений ограничен реализацией вышестоящий, но рекомендуется не более 1 МБ.
  • Серверные сообщения:
    • Нет ограничений на размер сообщения сервера, но рекомендуется не более 16 МБ.
    • Сервер приложений может задать ограничение для размера клиентского сообщения. Значение по умолчанию — 32 КБ. Дополнительные сведения см. в разделе "Вопросы безопасности" в ASP.NET Core SignalR.
    • Внесерверное:

Для клиентов WebSocket большие сообщения делятся на небольшие сообщения, которые не более 2 КБ каждый и передается отдельно. Разбиение и соединение сообщений обрабатываются с помощью пакетов SDK. При этом усилия со стороны разработчиков не требуются.

Большие сообщения снижают производительность обмена сообщениями. Используйте сообщения меньшего размера всегда, когда это возможно, и выполняйте тестирование, чтобы выбрать оптимальный размер сообщения для каждого сценария использования.

Подсчет сообщений для выставления счетов

Сообщения, отправляемые в службу, являются входящий трафик и сообщения, отправленные из службы, являются исходящими сообщениями. Для выставления счетов учитываются только исходящие сообщения из Служба Azure SignalR. Сообщения проверки связи, которыми обмениваются клиенты и серверы, в расчет не берутся.

Сообщения размером более 2 КБ считаются как несколько сообщений по 2 КБ. Диаграмма числа сообщений на портале Azure обновляется при поступлении каждых 100 сообщений на концентратор.

Представьте, например, что у вас есть один сервер приложений и три клиента.

  • Когда сервер приложений передает 1-КБ сообщение всем подключенным клиентам, сообщение от сервера приложений к службе считается бесплатным входящего сообщения. Три сообщения, отправляемые из службы каждому из клиентов, являются исходящими сообщениями и оплачиваются.

  • Когда клиент A отправляет 1 КБ входящее сообщение клиенту B, не проходя через сервер приложений, сообщение является бесплатным входящего сообщения. Сообщение, перенаправленное из службы в клиент B , оплачивается как исходящее сообщение.

  • Если у вас есть три клиента и один сервер приложений, когда один клиент отправляет 4-КБ сообщение для сервера, широковещательное сообщение для всех клиентов, количество выставленных счетов составляет восемь:

    • Одно сообщение от службы к серверу приложений.
    • Три сообщения от службы клиентам. Каждое сообщение считается как два сообщения по 2 КБ.

Подсчет подключений

Служба Azure SignalR создает сервер приложений и клиентские подключения. По умолчанию каждый сервер приложений запускается с пятью начальными подключениями на концентратор, а на каждого клиента приходится одно клиентское подключение.

Предположим, например, что у вас есть два сервера приложений и вы определили пять концентраторов в коде. Количество подключений к серверу составляет 50: (2 сервера приложений * 5 концентраторов * 5 подключений на концентратор).

Число подключений, показанное в портал Azure, включает серверные, клиентские, диагностические и динамические подключения трассировки. Ниже приведен список типов подключений.

  • Серверное подключение: подключает Службу Azure SignalR и сервер приложений.
  • Клиентское подключение: подключает Службу Azure SignalR и клиентское приложение.
  • Диагностическое подключение: особый тип подключения клиента, который может создать более подробный журнал, который может повлиять на производительность. Этот тип клиента предназначен для устранения неполадок.
  • Динамическое подключение трассировки: подключается к конечной точке динамической трассировки и получает трассировку Службы Azure SignalR в режиме реального времени.

Динамическое подключение трассировки не считается клиентским подключением или серверным подключением.

Служба SignalR для ASP.NET подсчитывает подключения к серверу по-другому. Она добавляет один стандартный концентратор к уже определенным вами концентраторам. По умолчанию каждому серверу приложений требуется дополнительно пять начальных подключений к серверу. Число начальных подключений для стандартного концентратора остается согласованным с другими концентраторами.

Служба и сервер приложений продолжают синхронизировать состояние подключения и вносить изменения в подключения к серверу, чтобы повысить производительность и стабильность службы. Таким образом, вы можете увидеть изменения в количестве подключений к серверу в работающей службе.