Freigeben über


Leistungshandbuch für Azure Web PubSub Service

Einer der wichtigsten Vorteile der Verwendung von Azure Web PubSub Service ist die einfache Skalierung. In einem groß angelegten Szenario ist die Leistung ein wichtiger Faktor.

In diesem Leitfaden werden die Faktoren vorgestellt, die sich auf die Leistung des Web PubSub-Diensts auswirken. Wir beschreiben typische Leistung in unterschiedlichen Anwendungsfallszenarien.

Schnelle Auswertung mithilfe von Metriken

Bevor wir die Faktoren durchgehen, die sich auf die Leistung auswirken, führen wir zunächst eine einfache Möglichkeit ein, den Druck Ihres Diensts zu überwachen. Es gibt eine Metrik namens "Serverlast " im Portal.

Screenshot der Serverlastmetrik von Azure Web PubSub im Portal. Die Metrik zeigt, dass die Serverlast bei etwa 8 Prozent liegt.

Es zeigt den Rechendruck Ihres Azure Web PubSub-Diensts. Sie können ihr eigenes Szenario testen und diese Metrik überprüfen, um zu entscheiden, ob die Skalierung hochgesetzt werden soll. Die Latenz innerhalb des Azure Web PubSub-Diensts bleibt niedrig, wenn die Serverlast unter 70%liegt.

Hinweis

Wenn Sie Einheit 50 oder größer verwenden und Ihr Szenario hauptsächlich an kleine Gruppen (Gruppengröße <20) sendet, müssen Sie als Referenz das Senden an kleine Gruppe überprüfen. In diesen Szenarien gibt es große Routingkosten, die nicht in der Serverlast enthalten sind.

Im Folgenden finden Sie detaillierte Konzepte zur Bewertung der Leistung.

Begriffsdefinitionen

Eingehend: Die eingehende Nachricht an den Azure Web PubSub Dienst.

Ausgehend: Die ausgehende Nachricht vom Azure Web PubSub-Dienst.

Bandbreite: Die Gesamtgröße aller Nachrichten in 1 Sekunde.

Übersicht

In diesem Leitfaden werden die folgenden Fragen beantwortet:

  • Was ist die typische Leistung des Azure Web PubSub-Diensts für jede Einheitsgröße?

  • Erfüllt Azure Web PubSub Service meine Anforderungen für den Nachrichtendurchsatz (z. B. senden von 100.000 Nachrichten pro Sekunde)?

  • Wie kann ich für mein spezifisches Szenario die richtige Einheitsgröße auswählen?

Um diese Fragen zu beantworten, gibt dieser Leitfaden zunächst eine allgemeine Erläuterung der Faktoren, die sich auf die Leistung auswirken. Anschließend werden die maximalen eingehenden und ausgehenden Nachrichten für typische Anwendungsfälle veranschaulicht: Senden an Gruppen über Web PubSub-Unterprotocol, Upstream und Rest-API .

In diesem Leitfaden können nicht alle Szenarien behandelt werden (und unterschiedliche Anwendungsfälle, Nachrichtengrößen, Nachrichtensendungsmuster usw.). Es enthält jedoch einige grundlegende Informationen, um die Leistungsbeschränkung zu verstehen.

Leistungserblick

In diesem Abschnitt werden die Methoden zur Leistungsbewertung beschrieben und dann alle Faktoren aufgelistet, die sich auf die Leistung auswirken. Am Ende stellt es Methoden bereit, die Ihnen dabei helfen, Leistungsanforderungen zu bewerten.

Methodik

Durchsatz und Latenz sind zwei typische Aspekte der Leistungsüberprüfung. Der maximale Durchsatz (eingehende und ausgehende Bandbreite) wird als maximal erreichter Durchsatz definiert, wenn 99 Prozent der Nachrichten Latenz aufweisen, die kleiner als 1 Sekunde ist. Es ist kein hartes Limit.

Leistungsfaktoren

Theoretisch ist die Kapazität des Azure Web PubSub-Diensts durch Berechnungsressourcen begrenzt: CPU, Arbeitsspeicher und Netzwerk. Beispielsweise verursachen mehr Verbindungen mit azure Web PubSub Service, dass der Dienst mehr Arbeitsspeicher verwendet. Bei größerem Nachrichtendatenverkehr (z. B. ist jede Nachricht größer als 2.048 Byte), muss azure Web PubSub Service mehr CPU-Zyklen für den Verarbeitungsverkehr ausgeben.

Die Nachrichtenweiterleitungskosten beschränken auch die Leistung. Azure Web PubSub Service spielt eine Rolle als Nachrichtenbroker, der die Nachricht zwischen einer Reihe von Clients leitet. Für ein anderes Szenario oder eine andere API ist eine andere Routingrichtlinie erforderlich.

Bei Echo sendet der Client eine Nachricht an den Upstream, und der Upstream gibt die Nachricht wieder an den Client zurück. Dieses Muster hat die niedrigsten Routingkosten. Für Übertragung, Senden an Gruppe und Senden an die Verbindung muss azure Web PubSub Service jedoch die Zielverbindungen über die interne verteilte Datenstruktur nachschlagen. Diese zusätzliche Verarbeitung verwendet mehr CPU, Arbeitsspeicher und Netzwerkbandbreite. Daher ist die Leistung langsamer.

Zusammenfassend wirken sich die folgenden Faktoren auf die eingehende und ausgehende Kapazität aus:

  • Einheitengröße (CPU/Arbeitsspeicher)

  • Anzahl der Verbindungen

  • Nachrichtengröße

  • Nachrichtensendrate

  • Anwendungsfallszenario (Routingkosten)

Suchen einer richtigen Einheitsgröße

Wie können Sie die eingehende/ausgehende Kapazität auswerten oder ermitteln, welche Einheitengröße für einen bestimmten Anwendungsfall geeignet ist?

Jede Einheitsgröße verfügt über eine eigene maximale eingehende Bandbreite und ausgehende Bandbreite. Eine reibungslose Benutzererfahrung wird nicht garantiert, nachdem der eingehende oder ausgehende Datenverkehr den Schwellenwert überschritten hat.

  inboundBandwidth = inboundConnections * messageSize / sendInterval
  outboundBandwidth = outboundConnections * messageSize / sendInterval
  • inboundConnections: Die Anzahl der Verbindungen, die die Nachricht senden.
  • outboundConnections: Die Anzahl der Verbindungen, die die Nachricht empfangen.
  • messageSize: Die Größe einer einzelnen Nachricht (Mittelwert). Eine kleine Nachricht, die kleiner als 1.024 Byte ist, wirkt sich auf die Leistung aus, die einer 1.024-Byte-Nachricht ähnelt.
  • sendInterval: Das Intervall zum Senden von Nachrichten. Beispielsweise bedeutet 1 Sekunde, jede Sekunde eine Nachricht zu senden. Ein kleineres Intervall bedeutet, mehr Nachrichten in einem Zeitraum zu senden. Beispielsweise bedeutet 0,5 Sekunde, zwei Nachrichten jede Sekunde zu senden.
  • Connections: Der zugesicherte maximale Schwellenwert für den Azure Web PubSub Service für jede Einheitengröße. Verbindungen, die den Schwellenwert überschreiten, werden gedrosselt.

Gehen Sie davon aus, dass der Upstream leistungsstark genug ist und nicht der Leistungsengpass ist. Überprüfen Sie dann die maximale eingehende und ausgehende Bandbreite für jede Einheitsgröße.

Fallstudie

Die folgenden Abschnitte durchlaufen drei typische Anwendungsfälle: Senden an Gruppen über Web PubSub-Unterprotocol, Auslösen von CloudEvent, Aufrufen der Rest-API. Für jedes Szenario listet der Abschnitt die aktuelle eingehende und ausgehende Kapazität für Azure Web PubSub Service auf. Außerdem werden die wichtigsten Faktoren erläutert, die sich auf die Leistung auswirken.

In allen Anwendungsfällen beträgt die Standardnachrichtengröße 2.048 Byte, und das Intervall für das Senden von Nachrichten beträgt 1 Sekunde.

An Gruppen über Web PubSub-Unterprotocol senden

Der Dienst unterstützt ein bestimmtes Unterprotokoll, json.webpubsub.azure.v1, das es den Clients ermöglicht, direkt zu veröffentlichen und zu abonnieren, anstatt eine Rundreise zum Upstream-Server zu machen. Dieses Szenario ist effizient, da kein Server beteiligt ist und der gesamte Datenverkehr die Clientdienst-WebSocket-Verbindung durchläuft.

Diagramm, das den Workflow zum Senden an Gruppen anzeigt.

Die Gruppenmitglieds- und Gruppenanzahl sind zwei Faktoren, die sich auf die Leistung auswirken. Zur Vereinfachung der Analyse definieren wir zwei Arten von Gruppen:

  • Große Gruppe: Die Gruppennummer ist immer 10. Die Anzahl der Gruppenmitglieder ist gleich (max. Verbindungsanzahl) / 10. Zum Beispiel, für Einheit 1, wenn es 1.000 Verbindungszähle gibt, dann hat jede Gruppe 1000 / 10 = 100 Mitglieder.
  • Kleine Gruppe: Jede Gruppe hat 10 Verbindungen. Die Gruppennummer ist gleich (max. Verbindungsanzahl) / 10. Zum Beispiel, für Einheit 1, wenn es 1.000 Verbindungseinheiten gibt, dann haben wir 1.000 / 10 = 100 Gruppen.

Senden an Gruppe bringt Routingkosten für den Azure Web PubSub-Dienst mit sich, da er die Zielverbindungen über eine verteilte Datenstruktur finden muss. Da sich die Sendeverbindungen erhöhen, steigen die Kosten.

Große Gruppe

Für das Senden an eine große Gruppe wird die ausgehende Bandbreite zum Engpass, bevor das Routingkostenlimit erreicht wird. Die folgende Tabelle enthält die maximale ausgehende Bandbreite.

An große Gruppe senden Einheit 1 Einheit 2 Einheit 10 Einheit 50 Einheit 100 Einheit 200 Einheit 500 Einheit 1000
Verbindungen 1.000 2,000 10.000 50,000 100,000 200,000 500.000 1.000.000
Anzahl der Gruppenmitglieder 100 200 1.000 5.000 10.000 5.000 10.000 20.000
Gruppenanzahl 10 10 10 10 10 10 10 10
Eingehende Nachrichten pro Sekunde 30 30 30 30 30 30 30 30
Eingehende Bandbreite 60 KBps 60 KBps 60 KBps 60 KBps 60 KBps 60 KBps 60 KBps 60 KBps
Ausgehende Nachrichten pro Sekunde 3,000 6.000 30.000 150,000 300.000 600,000 1.500.000 3,000,000
Ausgehende Bandbreite 6 MBps 12 MBps 60 MBps 300 MBps 600 MBps 1.200 MBps 3.000 MBps 6.000 MBps
Kleine Gruppe

Die Routingkosten sind für das Senden von Nachrichten an viele kleine Gruppen von Bedeutung. Derzeit erreicht die Azure Web PubSub Service-Implementierung das Routingkostenlimit bei Einheit 50. Das Hinzufügen weiterer CPU und Arbeitsspeicher hilft nicht, sodass Unit 100 nicht durch den Entwurf weiter verbessert werden kann. Wenn Sie mehr eingehende Bandbreite benötigen, müssen Sie Premium_P2(Einheit >100) skalieren.

An kleine Gruppe senden Einheit 1 Einheit 2 Einheit 10 Einheit 50 Einheit 100 Einheit 200 Einheit 500 Einheit 1000
Verbindungen 1.000 2,000 10.000 50,000 100,000 200,000 500.000 1.000.000
Anzahl der Gruppenmitglieder 10 10 10 10 10 10 10 10
Gruppenanzahl 100 200 1.000 5.000 10.000 20.000 50,000 100,000
Eingehende Nachrichten pro Sekunde 200 400 2,000 10.000 10.000 20.000 50,000 100,000
Eingehende Bandbreite 400 KBps 800 KBps 4 MBps 20 MBps 20 MBps 40 MBit/s 100 MBps 200 MBit/s
Ausgehende Nachrichten pro Sekunde 2,000 4\.000 20.000 100,000 100,000 200,000 500.000 1.000.000
Ausgehende Bandbreite 4 MBps 8 MBps 40 MBps 200 MBps 200 MBps 400 MBps 1.000 MBps 2.000 MBps

Hinweis

Die Gruppenanzahl, die in der Tabelle aufgeführte Gruppenmitgliedsanzahl sind keine harten Grenzwerte. Diese Parameterwerte werden ausgewählt, um ein stabiles Benchmarkszenario festzulegen.

Auslösen eines Cloudereignisses

Der Dienst übermittelt Clientereignisse an den Upstream-Webhook mithilfe des CloudEvents-HTTP-Protokolls.

Der Upstream-Webhook

Für jedes Ereignis formuliert es eine HTTP POST-Anforderung an den registrierten Upstream und erwartet eine HTTP-Antwort.

Hinweis

Web PubSub unterstützt auch HTTP 2.0 für die Zustellung von Upstream-Ereignissen. Das folgende Ergebnis wird mit HTTP 1.1 getestet. Wenn Ihr App-Server HTTP 2.0 unterstützt, ist die Leistung besser.

Echo

In diesem Fall schreibt der App-Server die ursprüngliche Nachricht in der HTTP-Antwort zurück. Das Verhalten von Echo bestimmt, dass die maximale eingehende Bandbreite der maximalen ausgehenden Bandbreite entspricht. Details finden Sie in der folgenden Tabelle.

Echo Einheit 1 Einheit 2 Einheit 10 Einheit 50 Einheit 100 Einheit 200 Einheit 500 Einheit 1000
Verbindungen 1.000 2,000 10.000 50,000 100,000 200,000 500.000 1.000.000
Eingehende/ausgehende Nachrichten pro Sekunde 500 1.000 5.000 25,000 50,000 100,000 250.000 500.000
Eingehende/ausgehende Bandbreite 1 MBps 2 MBps 10 MBps 50 MBps 100 MBps 200 MBps 500 MBps 1.000 MBps

REST API

Azure Web PubSub bietet leistungsstarke APIs zum Verwalten von Clients und zum Bereitstellen von Echtzeitnachrichten.

Diagramm, das den Allgemeinen Workflow des Web PubSub-Diensts mithilfe von REST-APIs zeigt.

An Benutzer über DIE REST-API senden

Der Benchmark weist allen Clients Benutzernamen zu, bevor sie mit dem Herstellen einer Verbindung mit dem Azure Web PubSub Service beginnen.

An Benutzer über DIE REST-API senden Einheit 1 Einheit 2 Einheit 10 Einheit 50 Einheit 100 Einheit 200 Einheit 500 Einheit 1000
Verbindungen 1.000 2,000 10.000 50,000 100,000 200,000 500.000 1.000.000
Eingehende/ausgehende Nachrichten pro Sekunde 180 360 1\.800 9.000 18.000 36.000 90.000 180.000
Eingehende/ausgehende Bandbreite 360 KBps 720 KBps 3,6 MBps 18 MBps 36 MBps 72 MBps 180 MBps 360 MBps

Übertragen über REST-API

Die Bandbreite ist identisch mit der für das Senden an große Gruppe.

Übertragen über REST-API Einheit 1 Einheit 2 Einheit 10 Einheit 50 Einheit 100 Einheit 200 Einheit 500 Einheit 1000
Verbindungen 1.000 2,000 10.000 50,000 100,000 200,000 500.000 1.000.000
Eingehende Nachrichten pro Sekunde 3 3 3 3 3 3 3 3
Ausgehende Nachrichten pro Sekunde 3,000 6.000 30.000 150,000 300.000 600,000 1.500.000 3,000,000
Eingehende Bandbreite 6 KBIT/s 6 KBIT/s 6 KBIT/s 6 KBIT/s 6 KBIT/s 6 KBIT/s 6 KBIT/s 6 KBIT/s
Ausgehende Bandbreite 6 MBps 12 MBps 60 MBps 300 MBps 600 MBps 1.200 MBps 3.000 MB 6.000 MB

Nächste Schritte

Erstellen Sie mithilfe dieser Ressourcen Ihre eigene Anwendung: