Leistungsleitfaden für den Azure Web PubSub-Dienst

Einer der wichtigsten Vorteile der Verwendung von Azure Web PubSub Service ist die einfache Skalierung. In einem Szenario mit großem Umfang 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 Sie die Faktoren durchgehen, die sich auf die Leistung auswirken, lassen Sie uns zunächst eine einfache Möglichkeit zum Überwachen des Drucks vorstellen, unter dem Ihr Dienst steht. 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.

Sie zeigt den Computingdruck, unter dem Ihr Azure Web PubSub-Dienst steht. Sie können Ihr eigenes Szenario testen und diese Metrik überprüfen, um zu entscheiden, ob eine Hochskalierung erfolgen soll. Die Latenz innerhalb des Azure Web PubSub-Diensts würde niedrig bleiben, 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 fallen hohe Routingkosten an, die nicht in der Serverlast enthalten sind.

Nachfolgend 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 einer Sekunde.

Übersicht

Dieser Leitfaden beantwortet die folgenden Fragen:

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

  • Erfüllt der Azure Web PubSub-Dienst meine Anforderungen an 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?

In diesem Leitfaden werden zunächst die Faktoren, die sich auf die Leistung auswirken, auf hoher Ebene erläutert. Anschließend werden die maximalen eingehenden und ausgehenden Nachrichten für typische Anwendungsfälle veranschaulicht: An Gruppen senden über das Web PubSub-Unterprotokol, Upstream und Rest-API.

Dieser Leitfaden kann nicht alle Szenarien abdecken (und verschiedene Anwendungsfälle, Nachrichtengrößen, Nachrichtensendemuster usw.). Er enthält jedoch einige grundlegende Informationen, um die Leistungseinschränkung zu verstehen.

Leistungsübersicht

Dieser Abschnitt beschreibt die Methoden zur Leistungsauswertung und listet anschließend alle Faktoren auf, die sich auf die Leistung auswirken. Am Ende werden Methoden bereitgestellt, die Ihnen helfen, die Leistungsanforderungen auszuwerten.

Methodik

Durchsatz und Latenz sind zwei typische Aspekte der Leistungsüberprüfung. Der maximalen Durchsatz (eingehende und ausgehende Bandbreite) wird als maximal erreichter Durchsatz definiert, wenn 99 Prozent der Nachrichten eine Latenz aufweisen, die weniger als 1 Sekunde beträgt. 2 GB ist keine harte Grenze.

Leistungsfaktoren

Theoretisch ist die Kapazität des Azure Web PubSub-Diensts durch Berechnungsressourcen begrenzt: CPU, Arbeitsspeicher und Netzwerk. Eine größere Anzahl von Verbindungen mit dem Azure Web PubSub-Dienst führt beispielsweise dazu, dass der Dienst mehr Arbeitsspeicher benötigt. Für umfangreicheren Nachrichtenverkehr (z. B. wenn jede Nachricht größer als 2.048 Byte ist) muss der Azure Web PubSub-Dienst mehr CPU-Zyklen für die Verarbeitung des Datenverkehrs aufwenden.

Die Kosten für das Nachrichtenrouting begrenzen auch die Leistung. Der Azure Web PubSub-Dienst dient als Nachrichtenbroker, der die Nachricht zwischen mehreren Clients weiterleitet. Ein anderes Szenario oder eine andere API erfordert eine andere Routingrichtlinie.

Bei echo sendet der Client eine Nachricht an den Upstream, der die Nachricht an den Client zurückgibt. Dieses Muster weist die niedrigsten Routingkosten auf. Aber für Broadcast, An Gruppe senden und An Verbindung senden muss der Azure Web PubSub-Dienst die Zielverbindungen über die intern verteilte Datenstruktur suchen. Diese zusätzliche Verarbeitung beansprucht mehr CPU, Arbeitsspeicher und Netzwerkbandbreite. Infolgedessen ist die Leistung geringer.

Zusammenfassend lässt sich sagen, dass sich die folgenden Faktoren auf die ein- und ausgehenden Kapazitäten auswirken:

  • Einheitengröße (CPU/Arbeitsspeicher)

  • Anzahl der Verbindungen

  • Nachrichtengröße

  • Nachrichtensendungsrate

  • Anwendungsfallszenario (Routingkosten)

Finden der richtigen Einheitsgröße

Wie können Sie die ein- und ausgehende Kapazität bewerten oder herausfinden, welche Einheitengröße für einen bestimmten Anwendungsfall geeignet ist?

Jede Einheitsgröße verfügt über eine eigene maximale eingehende und ausgehende Bandbreite. Nachdem der eingehende oder ausgehende Datenverkehr den Schwellenwert überschritten hat, ist keine einwandfreie Nutzung gewährleistet.

  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 (Durchschnittswert). Eine kleine Nachricht mit weniger als 1.024 Bytes hat eine Leistungsauswirkung, die einer 1.024-Byte-Nachricht ähnlich ist.
  • sendInterval: Dies ist das Intervall zum Senden von Nachrichten. Wenn beispielsweise eine Sekunde festgelegt ist, wird jede Sekunde eine Nachricht gesendet. Ein kürzeres Intervall bedeutet, dass mehr Nachrichten in einem Zeitraum gesendet werden. So bedeutet beispielsweise ein Wert von 0,5 Sekunden, dass pro Sekunde zwei Nachrichten gesendet werden.
  • Connections: Der committete maximale Schwellenwert für den Azure Web PubSub-Dienst für jede Einheitsgröße. Verbindungen, die den Schwellenwert überschreiten, werden gedrosselt.

Angenommen, der Upstream ist leistungsstark genug und nicht der Leistungsengpass. Überprüfen Sie dann die maximale ein- und ausgehende Bandbreite für jede Einheitsgröße.

Fallstudie

In den folgenden Abschnitten werden drei typische Anwendungsfälle beschrieben: Senden an Gruppen über das Web PubSub-Unterprotokoll, Auslösen von CloudEvent und Abrufen der REST-API. Für jedes Szenario werden im Abschnitt die aktuelle ein- und ausgehende Kapazität für den Azure Web PubSub-Dienst aufgelistet. Darüber hinaus werden die wichtigsten Faktoren erläutert, die sich auf die Leistung auswirken.

In allen Anwendungsfällen beträgt die standardmäßige Nachrichtengröße 2.048 Byte und das Sendeintervall eine Sekunde.

Senden an Gruppen über das Web PubSub-Unterprotokoll

Der Dienst unterstützt das Unterprotokoll namens json.webpubsub.azure.v1, das es den Clients ermöglicht, Nachrichten direkt zu veröffentlichen bzw. zu abonnieren, ohne einen Roundtrip zum Upstreamserver durchführen zu müssen. Dieses Szenario ist effizient, da kein Server beteiligt ist und der gesamte Datenverkehr die WebSocket-Clientdienstverbindung durchläuft.

Abbildung des Workflows „An Gruppe senden“

Anzahl der Gruppenmitglieder und Gruppen sind zwei Faktoren, die sich auf die Leistung auswirken. Es werden zwei Arten von Gruppen definiert, um die Analyse zu vereinfachen:

  • Große Gruppe: Die Gruppenanzahl ist immer 10. Die Anzahl der Gruppenmitglieder entspricht: (maximale Verbindungszahl) / 10. Wenn es z. B. für Unit 1 1.000 Verbindungen gibt, dann besteht jede Gruppe aus 1.000 / 10 = 100 Mitgliedern.
  • Kleine Gruppe: Jede Gruppe verfügt über 10 Verbindungen. Die Gruppenanzahl entspricht: (maximale Verbindungsanzahl) / 10. Wenn es z. B. für Unit 1 1.000 Verbindungen gibt, dann sind das 1.000 / 10 = 100 Gruppen.

An Gruppe senden verursacht Routingkosten für den Azure Web PubSub-Dienst, da die Zielverbindungen über eine verteilte Datenstruktur gefunden werden müssen. Mit zunehmender Anzahl der sendenden Verbindungen steigen die Kosten.

Große Gruppe

Bei An große Gruppe senden wird die ausgehende Bandbreite zum Engpass, bevor die Routingkostengrenze erreicht wird. In der folgenden Tabelle ist die maximale Bandbreite für ausgehenden Datenverkehr aufgeführt.

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 KBit/s 60 KBit/s 60 KBit/s 60 KBit/s 60 KBit/s 60 KBit/s 60 KBit/s 60 KBit/s
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 MBit/s 12 MBit/s 60 MBit/s 300 MBit/s 600 MBit/s 1.200 MBit/s 3.000 MBit/s 6.000 MBit/s
Kleine Gruppe

Die Routingkosten sind für das Senden von Nachrichten an viele kleine Gruppen beträchtlich. Derzeit erreicht die Implementierung des Azure Web PubSub-Diensts die Routingkostengrenze bei Unit50. Das Erhöhen der Anzahl von CPUs und Arbeitsspeicher hilft in diesem Fall nicht, daher kann Einheit 100 vorsätzlich nicht verbessert werden. 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 KBit/s 800 KBit/s 4 MBit/s 20 MBit/s 20 MBit/s 40 MBit/s 100 MBit/s 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 MBit/s 8 MBit/s 40 MBit/s 200 MBit/s 200 MBit/s 400 MBit/s 1.000 MBit/s 2.000 MBit/s

Hinweis

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

Auslösen eines Cloudereignisses

Der Dienst übergibt Clientereignisse mithilfe des CloudEvents-HTTP-Protokolls an den Upstreamwebhook.

Upstreamwebhook

Für jedes Ereignis formuliert er 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 Bereitstellung von Upstreamereignissen. 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 zurück in die HTTP-Antwort. Das Verhalten von Echo bestimmt, dass die maximale eingehende Bandbreite gleich der maximalen ausgehenden Bandbreite ist. 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
Ein-/Ausgehende Nachrichten pro Sekunde 500 1.000 5.000 25.000 50.000 100.000 250.000 500.000
Ein-/Ausgehende Bandbreite 1 MBit/s 2 MBit/s 10 MBit/s 50 MBit/s 100 MBit/s 200 MBit/s 500 MBit/s 1.000 MBit/s

REST-API

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

Abbildung des gesamten Workflows des Web PubSub-Diensts mithilfe von REST-APIs

Über die REST-API an Benutzer senden

Die Benchmark weist allen Clients Benutzernamen zu, bevor diese mit dem Herstellen einer Verbindung mit dem Azure Web PubSub-Dienst beginnen.

Über die REST-API an Benutzer 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
Ein-/Ausgehende Nachrichten pro Sekunde 180 360 1\.800 9.000 18.000 36.000 90.000 180.000
Ein-/Ausgehende Bandbreite 360 KBit/s 720 KBit/s 3,6 MBit/s 18 MBit/s 36 MBit/s 72 MBit/s 180 MBit/s 360 MBit/s

Übertragen über die REST-API

Die Bandbreite entspricht der für An große Gruppe senden.

Übertragen über die 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 MBit/s 12 MBit/s 60 MBit/s 300 MBit/s 600 MBit/s 1.200 MBit/s 3.000 MB 6.000 MB

Nächste Schritte

Erstellen Sie mithilfe dieser Ressourcen Ihre eigene Anwendung: