Сообщения и подключения в службе 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.
- Бессерверные:
- Rest API: 1 МБ для текста сообщения, 16 КБ для заголовков.
- Нет ограничений для WebSocket, для пакета SDK для управления режим палатки, но рекомендуется не более 16 МБ.
Для клиентов 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 подсчитывает подключения к серверу по-другому. Она добавляет один стандартный концентратор к уже определенным вами концентраторам. По умолчанию каждому серверу приложений требуется дополнительно пять начальных подключений к серверу. Число начальных подключений для стандартного концентратора остается согласованным с другими концентраторами.
Служба и сервер приложений продолжают синхронизировать состояние подключения и вносить изменения в подключения к серверу, чтобы повысить производительность и стабильность службы. Таким образом, вы можете увидеть изменения в количестве подключений к серверу в работающей службе.