Share via


Prestatiehandleiding voor Azure Web PubSub Service

Een van de belangrijkste voordelen van het gebruik van Azure Web PubSub Service is het gemak van schalen. In een grootschalig scenario is de prestaties een belangrijke factor.

In deze handleiding introduceren we de factoren die van invloed zijn op de prestaties van de Web PubSub-service. We beschrijven typische prestaties in verschillende use-casescenario's.

Snelle evaluatie met metrische gegevens

Voordat u de factoren doorloopt die van invloed zijn op de prestaties, introduceren we eerst een eenvoudige manier om de druk van uw service te bewaken. Er is een metrische waarde met de naam Server Load in de portal.

Schermopname van de metrische serverbelasting van Azure Web PubSub in portal. De metrische waarde geeft aan dat serverbelasting ongeveer 8 procent van het gebruik bedraagt.

Hier ziet u de rekendruk van uw Azure Web PubSub-service. U kunt testen op uw eigen scenario en deze metrische gegevens controleren om te bepalen of u omhoog wilt schalen. De latentie in de Azure Web PubSub-service blijft laag als de serverbelasting lager is dan 70%.

Notitie

Als u eenheid 50 of groter gebruikt en uw scenario voornamelijk naar kleine groepen (groepsgrootte <20) wordt verzonden, moet u het verzenden naar een kleine groep controleren ter referentie. In deze scenario's zijn er grote routeringskosten die niet zijn opgenomen in de serverbelasting.

Hieronder ziet u gedetailleerde concepten voor het evalueren van prestaties.

Termendefinities

Binnenkomend: het binnenkomende bericht naar de Azure Web PubSub-service.

Uitgaand: het uitgaande bericht van de Azure Web PubSub-service.

Bandbreedte: de totale grootte van alle berichten in 1 seconde.

Overzicht

In deze handleiding worden de volgende vragen beantwoord:

  • Wat zijn de typische prestaties van de Azure Web PubSub Service voor elke eenheidsgrootte?

  • Voldoet Azure Web PubSub Service aan mijn vereisten voor berichtdoorvoer (bijvoorbeeld 100.000 berichten per seconde verzenden)?

  • Hoe kan ik voor mijn specifieke scenario de juiste eenheidsgrootte selecteren?

Om deze vragen te beantwoorden, geeft deze handleiding eerst een uitleg op hoog niveau van de factoren die van invloed zijn op de prestaties. Vervolgens ziet u de maximale inkomende en uitgaande berichten voor typische gebruiksvoorbeelden: Verzenden naar groepen via Web PubSub-subprotocol, upstream en rest API .

Deze handleiding kan niet alle scenario's behandelen (en verschillende use cases, berichtgrootten, bericht verzendende patronen, enzovoort). Maar het biedt enkele basisinformatie om inzicht te hebben in de prestatiebeperking.

Inzicht in prestaties

In deze sectie worden de methodologieën voor prestatieevaluatie beschreven en worden vervolgens alle factoren vermeld die van invloed zijn op de prestaties. Uiteindelijk biedt het methoden om u te helpen prestatievereisten te evalueren.

Methodologie

Doorvoer en latentie zijn twee typische aspecten van prestatiecontrole. De maximale doorvoer (binnenkomende en uitgaande bandbreedte) wordt gedefinieerd als de maximale bereikte doorvoer wanneer 99 procent van de berichten latentie heeft die kleiner is dan 1 seconde. Het is geen harde limiet.

Prestatiefactoren

Theoretisch wordt de capaciteit van de Azure Web PubSub-service beperkt door rekenbronnen: CPU, geheugen en netwerk. Meer verbindingen met Azure Web PubSub Service zorgen er bijvoorbeeld voor dat de service meer geheugen gebruikt. Voor groter berichtverkeer (bijvoorbeeld dat elk bericht groter is dan 2048 bytes), moet azure Web PubSub Service meer CPU-cycli uitgeven om verkeer te verwerken.

De kosten voor berichtroutering beperkt ook de prestaties. Azure Web PubSub Service speelt een rol als berichtbroker, waarmee het bericht wordt gerouteerd tussen een set clients. Voor een ander scenario of EEN ANDERE API is een ander routeringsbeleid vereist.

Voor echo verzendt de client een bericht naar de upstream en wordt het bericht weer naar de client verzonden. Dit patroon heeft de laagste routeringskosten. Maar voor broadcast, verzenden naar groep en verzenden naar verbinding moet Azure Web PubSub Service de doelverbindingen opzoeken via de interne gedistribueerde gegevensstructuur. Deze extra verwerking maakt gebruik van meer CPU, geheugen en netwerkbandbreedte. Hierdoor zijn de prestaties langzamer.

Kortom, de volgende factoren zijn van invloed op de inkomende en uitgaande capaciteit:

  • Eenheidsgrootte (CPU/geheugen)

  • Aantal verbindingen

  • Berichtgrootte

  • Verzendsnelheid van bericht

  • Use-casescenario (routeringskosten)

Een juiste eenheidsgrootte zoeken

Hoe kunt u de binnenkomende/uitgaande capaciteit evalueren of bepalen welke eenheidsgrootte geschikt is voor een specifieke use-case?

Elke eenheidsgrootte heeft een eigen maximale binnenkomende bandbreedte en uitgaande bandbreedte. Een soepele gebruikerservaring wordt niet gegarandeerd nadat het inkomende of uitgaande verkeer de drempelwaarde overschrijdt.

  inboundBandwidth = inboundConnections * messageSize / sendInterval
  outboundBandwidth = outboundConnections * messageSize / sendInterval
  • inkomende Verbinding maken ions: het aantal verbindingen dat het bericht verzendt.
  • uitgaande Verbinding maken ions: het aantal verbindingen dat het bericht ontvangt.
  • messageSize: De grootte van één bericht (gemiddelde waarde). Een klein bericht dat kleiner is dan 1024 bytes, heeft een invloed op de prestaties die vergelijkbaar is met een bericht van 1024 bytes.
  • sendInterval: het interval voor het verzenden van berichten. 1 seconde betekent bijvoorbeeld dat er elke seconde één bericht wordt verzonden. Een kleiner interval betekent dat er meer berichten in een bepaalde periode worden verzonden. 0,5 seconde betekent bijvoorbeeld dat er elke seconde twee berichten worden verzonden.
  • Verbinding maken ions: de vastgelegde maximumdrempel voor Azure Web PubSub Service voor elke eenheidsgrootte. Verbinding maken ionen die de drempelwaarde overschrijden, worden beperkt.

Stel dat de upstream krachtig genoeg is en niet het prestatieknelpunt is. Controleer vervolgens de maximale binnenkomende en uitgaande bandbreedte voor elke eenheidsgrootte.

Casestudy

In de volgende secties worden drie typische gebruiksscenario's beschreven: verzenden naar groepen via web pubsubprotocol, het activeren van CloudEvent, het aanroepen van de REST API. Voor elk scenario bevat de sectie de huidige inkomende en uitgaande capaciteit voor Azure Web PubSub Service. Ook worden de belangrijkste factoren uitgelegd die van invloed zijn op de prestaties.

In alle gebruiksscenario's is de standaard berichtgrootte 2048 bytes en is het verzendinterval van het bericht 1 seconde.

Verzenden naar groepen via Web PubSub-subprotocol

De service ondersteunt een specifiek subprotocol dat wordt aangeroepen json.webpubsub.azure.v1, waardoor de clients rechtstreeks publiceren/abonneren in plaats van een retour naar de upstream-server. Dit scenario is efficiënt omdat er geen server betrokken is en al het verkeer via de websocket-verbinding van de clientservice verloopt.

Diagram met de werkstroom verzenden naar groep.

Het aantal groepsleden en groepen zijn twee factoren die van invloed zijn op de prestaties. Om de analyse te vereenvoudigen, definiëren we twee soorten groepen:

  • Grote groep: Het groepsnummer is altijd 10. Het aantal leden van de groep is gelijk aan (max. aantal verbindingen) / 10. Als er bijvoorbeeld 1.000 verbindingen zijn, heeft elke groep 1000 /10 = 100 leden.
  • Kleine groep: elke groep heeft 10 verbindingen. Het groepsnummer is gelijk aan (max. aantal verbindingen) / 10. Als er bijvoorbeeld 1.000 verbindingsaantallen zijn, hebben we 1000 / 10 = 100 groepen.

Verzenden naar groep brengt routeringskosten naar Azure Web PubSub Service omdat deze de doelverbindingen moet vinden via een gedistribueerde gegevensstructuur. Naarmate de verzendende verbindingen toenemen, neemt de kosten toe.

Grote groep

Voor verzenden naar een grote groep wordt de uitgaande bandbreedte het knelpunt voordat de limiet voor routeringskosten wordt bereikt. De volgende tabel bevat de maximale uitgaande bandbreedte.

Verzenden naar grote groep Eenheid 1 Eenheid 2 Eenheid 10 Eenheid 50 Eenheid 100 Eenheid 200 Eenheid 500 Eenheid 1000
Connecties 1.000 2.000 10,000 50,000 100.000 200.000 500,000 1.000.000
Aantal groepsleden 100 200 1.000 5.000 10,000 5.000 10,000 20,000
Aantal groepen 10 10 10 10 10 10 10 10
Binnenkomende berichten per seconde 30 30 30 30 30 30 30 30
Binnenkomende bandbreedte 60 KBps 60 KBps 60 KBps 60 KBps 60 KBps 60 KBps 60 KBps 60 KBps
Uitgaande berichten per seconde 3.000 6.000 30,000 150.000 300,000 600,000 1,500,000 3,000,000
Uitgaande bandbreedte 6 MBps 12 MBps 60 MBps 300 MBps 600 MBps 1.200 MBps 3000 MBps 6.000 MBps
Kleine groep

De routeringskosten zijn aanzienlijk voor het verzenden van berichten naar veel kleine groepen. Momenteel bereikt de implementatie van de Azure Web PubSub-service de limiet voor routeringskosten bij eenheid 50. Het toevoegen van meer CPU en geheugen helpt niet, dus Eenheid 100 kan niet verder worden verbeterd door het ontwerp. Als u meer binnenkomende bandbreedte nodig hebt, moet u omhoog schalen om Premium_P2 (eenheid >100) te gebruiken.

Verzenden naar kleine groep Eenheid 1 Eenheid 2 Eenheid 10 Eenheid 50 Eenheid 100 Eenheid 200 Eenheid 500 Eenheid 1000
Connecties 1.000 2.000 10,000 50,000 100.000 200.000 500,000 1.000.000
Aantal groepsleden 10 10 10 10 10 10 10 10
Aantal groepen 100 200 1.000 5.000 10,000 20,000 50,000 100.000
Binnenkomende berichten per seconde 200 400 2.000 10,000 10,000 20,000 50,000 100.000
Binnenkomende bandbreedte 400 KBps 800 KBps 4 Mbps 20 MBps 20 MBps 40 MBps 100 MBps 200 MBps
Uitgaande berichten per seconde 2.000 4000 20,000 100.000 100.000 200.000 500,000 1.000.000
Uitgaande bandbreedte 4 MBps 8 MBps 40 MBps 200 MBps 200 MBps 400 MBps 1000 MBps 2000 MBps

Notitie

Het aantal groepen, het aantal groepsleden dat in de tabel wordt vermeld, zijn geen vaste limieten. Deze parameterwaarden worden geselecteerd om een stabiel benchmarkscenario tot stand te brengen.

Cloud event activeren

Service levert clientevenementen aan de upstream-webhook met behulp van het HTTP-protocol van CloudEvents.

De Upstream-webhook

Voor elke gebeurtenis formuleert het een HTTP POST-aanvraag naar de geregistreerde upstream en verwacht een HTTP-antwoord.

Notitie

Web PubSub ondersteunt ook HTTP 2.0 voor upstream-gebeurtenissen die worden geleverd. Het onderstaande resultaat wordt getest met HTTP 1.1. Als uw app-server HTTP 2.0 ondersteunt, zijn de prestaties beter.

Echo

In dit geval schrijft de app-server het oorspronkelijke bericht terug in het HTTP-antwoord. Het gedrag van echo bepaalt dat de maximale binnenkomende bandbreedte gelijk is aan de maximale uitgaande bandbreedte. Zie de volgende tabel voor meer informatie.

Echo Eenheid 1 Eenheid 2 Eenheid 10 Eenheid 50 Eenheid 100 Eenheid 200 Eenheid 500 Eenheid 1000
Connecties 1.000 2.000 10,000 50,000 100.000 200.000 500,000 1.000.000
Inkomende/uitgaande berichten per seconde 500 1.000 5.000 25,000 50,000 100.000 250.000 500,000
Binnenkomende/uitgaande bandbreedte 1 MBps 2 MBps 10 MBps 50 MBps 100 MBps 200 MBps 500 MBps 1000 MBps

REST-API

Azure Web PubSub biedt krachtige API's voor het beheren van clients en het leveren van realtime berichten.

Diagram met de algemene werkstroom van de Web PubSub-service met behulp van REST API's.

Verzenden naar gebruiker via REST API

De benchmark wijst gebruikersnamen toe aan alle clients voordat ze verbinding maken met Azure Web PubSub Service.

Verzenden naar gebruiker via REST API Eenheid 1 Eenheid 2 Eenheid 10 Eenheid 50 Eenheid 100 Eenheid 200 Eenheid 500 Eenheid 1000
Connecties 1.000 2.000 10,000 50,000 100.000 200.000 500,000 1.000.000
Inkomende/uitgaande berichten per seconde 180 360 1800 9.000 18.000 36,000 90,000 180,000
Binnenkomende/uitgaande bandbreedte 360 KBps 720 KBps 3.6 MBps 18 MBps 36 MBps 72 MBps 180 MBps 360 MBps

Uitzenden via REST API

De bandbreedte is hetzelfde als die voor verzenden naar een grote groep.

Uitzenden via REST API Eenheid 1 Eenheid 2 Eenheid 10 Eenheid 50 Eenheid 100 Eenheid 200 Eenheid 500 Eenheid 1000
Connecties 1.000 2.000 10,000 50,000 100.000 200.000 500,000 1.000.000
Binnenkomende berichten per seconde 3 3 3 3 3 3 3 3
Uitgaande berichten per seconde 3.000 6.000 30,000 150.000 300,000 600,000 1,500,000 3,000,000
Binnenkomende bandbreedte 6 KBps 6 KBps 6 KBps 6 KBps 6 KBps 6 KBps 6 KBps 6 KBps
Uitgaande bandbreedte 6 MBps 12 MBps 60 MBps 300 MBps 600 MBps 1.200 MBps 3000 MB 6000 MB

Volgende stappen

Gebruik deze resources om te beginnen met het bouwen van uw eigen toepassing: