Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
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.
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.
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.
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: