Mensajes y conexiones de Azure SignalR Service
El modelo de facturación de Azure SignalR Service está basado en el número de conexiones y el número de mensajes salientes. Este artículo explica cómo se definen y cuentan los mensajes y las conexiones para la facturación.
Formatos de mensajes
Azure SignalR Service admite los mismos formatos que admite ASP.NET Core SignalR: JSON y MessagePack.
Tamaño del mensaje
Los límites siguientes se aplican a los mensajes de Azure SignalR Service:
- Mensajes de cliente:
- En el caso de eventos del lado servidor o sondeo largos, el cliente no puede enviar mensajes de más de 1 MB.
- No hay ningún límite de tamaño para WebSocket para el servicio.
- El servidor de aplicaciones puede establecer un límite para el tamaño del mensaje de cliente. El valor predeterminado es (32 KB). Para obtener más información, vea Consideraciones de seguridad en ASP.NET Core SignalR.
- En los casos sin servidor, el tamaño del mensaje está limitado por la implementación ascendente, pero se recomienda menos de 1 MB.
- Mensajes del servidor:
- No hay límite para el tamaño del mensaje del servidor, pero se recomienda menos de 16 MB.
- El servidor de aplicaciones puede establecer un límite para el tamaño del mensaje de cliente. El valor predeterminado es (32 KB). Para obtener más información, vea Consideraciones de seguridad en ASP.NET Core SignalR.
- Sin servidor:
- API de REST: 1 MB para el cuerpo del mensaje, 16 KB para encabezados.
- No hay ningún límite para WebSocket, en modo persistente del SDK de administración, pero se recomienda menos de 16 MB.
Para clientes de WebSocket, los mensajes grandes se dividen en mensajes más pequeños de no más de 2 KB cada uno que se transmiten por separado. Los SDK controlan la división y el ensamblado de los mensajes. El desarrollador no debe hacer nada.
Los mensajes grandes afectan negativamente al rendimiento de la mensajería. Use mensajes de menor tamaño siempre que sea posible y pruebe para determinar el tamaño de mensaje óptimo para cada escenario de caso de uso.
Cómo se cuentan los mensajes para la facturación
Los mensajes enviados al servicio son mensajes entrantes y los mensajes enviados fuera del servicio son mensajes salientes. Para la facturación, solo se cuentan mensajes salientes de Azure SignalR Service. Los mensajes de ping entre clientes y servidores se omiten.
Los mensajes mayores de 2 KB se cuentan como mensajes múltiples de 2 KB cada uno. El gráfico de recuento de mensajes de Azure Portal se actualiza cada 100 mensajes por centro.
Por ejemplo, suponga que tiene un servidor de aplicaciones y tres clientes:
Cuando el servidor de aplicaciones difunde un mensaje de 1 KB a todos los clientes conectados, el mensaje del servidor de aplicaciones al servicio se considera un mensaje de entrada gratuito. Los tres mensajes enviados desde el servicio a cada uno de los clientes son mensajes salientes y se facturan.
Cuando el cliente A envía un mensaje entrante de 1 KB al cliente B, sin pasar por el servidor de aplicaciones, el mensaje es un mensaje entrante gratuito. El mensaje del servicio al cliente B se factura como mensaje saliente.
Cuando un cliente envía un mensaje de 4 KB para la difusión del servidor a todos los clientes, y hay tres clientes más un servidor de aplicaciones, el recuento de mensajes facturados es ocho:
- Un mensaje del servicio al servidor de aplicaciones.
- Tres mensajes del servicio a los clientes. Cada mensaje se cuenta como dos mensajes de 2 KB.
Cómo se cuentan las conexiones
Azure SignalR Service crea conexiones entre cliente y servidor de aplicaciones. De manera predeterminada, cada servidor de aplicaciones comienza con cinco conexiones iniciales por centro de conectividad y cada cliente tiene una conexión de cliente.
Por ejemplo, suponga que tiene dos servidores de aplicaciones y define cinco centros en el código. El recuento de conexiones de servidor es 50: (2 servidores de aplicaciones * 5 centros * 5 conexiones por centro).
El recuento de conexiones que se muestra en Azure Portal incluye conexiones de servidor, cliente, diagnóstico y seguimiento en directo. Los tipos de conexión se definen en la siguiente lista:
- Conexión de servidor: conecta Azure SignalR Service y el servidor de aplicaciones.
- Conexión de cliente: conecta Azure SignalR Service y la aplicación cliente.
- Conexión de diagnóstico: un tipo especial de conexión de cliente que puede generar un registro más detallado, lo que puede afectar al rendimiento. Este tipo de cliente está diseñado para la solución de problemas.
- Conexión de seguimiento en directo: se conecta al punto de conexión de seguimiento activo y recibe seguimientos en directo de Azure SignalR Service.
Tenga en cuenta que las conexiones de seguimiento en directo no se consideran conexiones de cliente ni conexiones de servidor.
ASP.NET SignalR calcula las conexiones de los servidores de otra forma. Incluye un centro predeterminado además de los centros que defina. De forma predeterminada, cada servidor de aplicaciones necesita cinco conexiones de los servidores. El número de conexiones iniciales del centro predeterminado se mantiene igual que el de los otros centros.
El servicio y el servidor de aplicaciones, mantienen la sincronización del estado de la conexión y realizan ajustes en las conexiones del servidor para mejorar el rendimiento y la estabilidad del servicio. Por lo tanto, es posible que vea los cambios en el número de conexiones de servidor en el servicio en ejecución.