Berichten en verbindingen in Azure SignalR Service

Het factureringsmodel voor Azure SignalR Service is gebaseerd op het aantal verbindingen en het aantal uitgaande berichten van de service. In dit artikel wordt uitgelegd hoe berichten en verbindingen worden gedefinieerd en geteld voor factureringsdoeleinden.

Berichtindelingen

Azure SignalR Service ondersteunt dezelfde indelingen als ASP.NET Core SignalR: JSON en MessagePack.

Berichtgrootte

De volgende limieten zijn van toepassing op Azure SignalR Service-berichten:

  • Clientberichten:
    • Voor lange polling- of serverzijde-gebeurtenissen kan de client geen berichten verzenden die groter zijn dan 1 MB.
    • Er is geen groottelimiet voor WebSocket voor de service.
    • App-server kan een limiet instellen voor de grootte van clientberichten. De standaardwaarde is 32 kB. Zie Beveiligingsoverwegingen in ASP.NET Core SignalR voor meer informatie.
    • Voor serverloos wordt de berichtgrootte beperkt door de upstream-implementatie, maar minder dan 1 MB wordt aanbevolen.
  • Serverberichten:
    • Er is geen limiet voor de grootte van serverberichten, maar minder dan 16 MB wordt aanbevolen.
    • App-server kan een limiet instellen voor de grootte van clientberichten. De standaardwaarde is 32 kB. Zie Beveiligingsoverwegingen in ASP.NET Core SignalR voor meer informatie.
    • Serverloos:
      • Rest API: 1 MB voor berichttekst, 16 kB voor headers.
      • Er is geen limiet voor WebSocket, beheer-SDK persis tentmodus, maar minder dan 16 MB wordt aanbevolen.

Voor WebSocket-clients worden grote berichten opgesplitst in kleinere berichten die niet meer dan 2 kB elk zijn en afzonderlijk worden verzonden. Het splitsen en samenvoegen van berichten wordt afgehandeld via SDK's. Ontwikkelaars hoeven er niets voor te doen.

Grote berichten hebben een negatieve invloed op de prestaties van de berichtenafhandeling. Gebruik, indien mogelijk, kleinere berichten en voer tests uit om de optimale berichtgrootte voor elk gebruiksscenario te bepalen.

Hoe berichten worden meegeteld voor de facturering

Berichten die naar de service worden verzonden, zijn binnenkomende berichten en berichten die van de service worden verzonden, zijn uitgaande berichten. Alleen uitgaande berichten van Azure SignalR Service worden geteld voor facturering. Ping-berichten tussen clients en servers worden genegeerd.

Een bericht dat groter is dan 2 kB, wordt beschouwd als meerdere berichten van elk 2 kB. De grafiek met het aantal berichten in de Azure-portal wordt elke 100 berichten per hub bijgewerkt.

Stel dat u één toepassingsserver hebt en drie clients:

  • Wanneer de toepassingsserver een bericht van 1 kB uitzendt naar alle verbonden clients, wordt het bericht van de toepassingsserver naar de service beschouwd als een gratis binnenkomend bericht. De drie berichten die van de service naar elk van de clients worden verzonden, zijn uitgaande berichten en worden gefactureerd.

  • Wanneer client A een binnenkomend bericht van 1 kB naar client B verzendt zonder via de app-server te gaan, is het bericht een gratis binnenkomend bericht. Het bericht dat van de service naar client B wordt doorgestuurd, wordt gefactureerd als een uitgaand bericht.

  • Als u drie clients en één toepassingsserver hebt en één client een bericht van 4 kB verzendt voor de server broadcast naar alle clients, is het gefactureerde aantal berichten acht:

    • Eén bericht van de service naar de toepassingsserver.
    • Drie berichten van de service naar de clients. Elk bericht wordt geteld als twee berichten van 2 kB.

Hoe verbindingen worden geteld

De Azure SignalR-service maakt toepassingsserver- en clientverbindingen. Standaard begint elke toepassingsserver met vijf initiële verbindingen per hub en heeft elke client heeft één clientverbinding.

Stel dat u twee toepassingsservers hebt en dat u vijf hubs in code definieert. Het aantal serververbindingen is 50: (2 app-servers * 5 hubs * 5 verbindingen per hub).

Het aantal verbindingen dat wordt weergegeven in Azure Portal bevat server-, client-, diagnostische en live trace-verbindingen. De verbindingstypen worden gedefinieerd in de volgende lijst:

  • Serververbinding: Verbinding maken s Azure SignalR Service en de app-server.
  • Clientverbinding: Verbinding maken s Azure SignalR Service en de client-app.
  • Diagnostische verbinding: een speciaal type clientverbinding dat een gedetailleerder logboek kan produceren, wat van invloed kan zijn op de prestaties. Dit type client is ontworpen voor probleemoplossing.
  • Livetraceringsverbinding: Verbinding maken s naar het live traceringseindpunt en ontvangt livetraceringen van Azure SignalR Service.

Een livetraceringsverbinding wordt niet meegeteld als een clientverbinding of als een serververbinding.

ASP.NET SignalR berekent serververbindingen op een andere manier. Het bevat één standaardhub, naast de hubs die u definieert. Standaard heeft elke toepassingsserver nog vijf initiële serververbindingen nodig. Het eerste aantal verbindingen voor de standaardhub blijft consistent met andere hubs.

De service en de toepassingsserver blijven de verbindingsstatus synchroniseren en wijzigingen aanbrengen in serververbindingen om betere prestaties en servicestabiliteit te krijgen. U ziet dus mogelijk wijzigingen in het aantal serververbindingen in uw actieve service.