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.
Shared-Abonnements in Azure Event Grid MQTT Broker sind ein messaging-Muster mit dem mehrere Clients Nachrichten aus einem einzelnen Themenabonnement als Gruppe nutzen können, sodass der Broker Nachrichten auf lastenausgleichsbasierte Weise über Clients verteilen kann. Anstelle, dass jeder Abonnent jede Nachricht empfängt, empfängt nur ein Client innerhalb der freigegebenen Gruppe jede Nachricht, wodurch die Skalierbarkeit und der Durchsatz für Verarbeitungssysteme im Backend verbessert werden.
Funktionsweise von freigegebenen Abonnements
In einem standardmäßigen MQTT-Abonnement erhält jeder abonnierte Client eine Kopie jeder Nachricht. Bei geteilten Abonnements behandelt der Broker eine Gruppe von Clients als einen einzigen logischen Abonnenten und verteilt Nachrichten unter ihnen.
- Jede Anwendungsnachricht, die dem freigegebenen Filter entspricht, wird nur an eine aktive Sitzung innerhalb der Gruppe übermittelt.
- Die Verteilung erfolgt normalerweise zufällig innerhalb der Gruppe durch Lastverteilung.
- Eine Clientsitzung kann gleichzeitig sowohl freigegebene als auch nicht freigegebene Abonnements enthalten.
- Mehrere Gruppen können dasselbe Thema unabhängig voneinander abonnieren.
Format für gemeinsame Abonnementthemen
Freigegebene Abonnements verwenden das folgende Format:
$share/{group-name}/{topic-filter}
Komponenten:
-
$share→ Identifiziert ein gemeinsames Abonnement -
{group-name}→ logische Consumergruppe -
{topic-filter}→ Thema oder Wildcardabonnement
Beispiel:
$share/order-processors/retail/orders/#
Wichtige Merkmale
- Lastenausgleichsverbrauch: Nachrichten werden über Clients in derselben Gruppe verteilt, um eine effiziente Verarbeitung sicherzustellen.
- Horizontale Skalierbarkeit: Verbraucher können unabhängig voneinander skaliert werden, ohne dass sich dies auf die Herausgeber auswirkt.
- Unabhängige Consumergruppen: Mehrere geteilte Gruppen empfangen die gleichen Nachrichten unabhängig voneinander, während sie intern eine Balance halten.
- Gemischte Abonnementunterstützung: Ein Client kann sowohl freigegebene als auch nicht freigegebene Abonnements in derselben Sitzung verwalten.
Beispielszenario: Verarbeitung von Einzelhandelsbestellungen
Betrachten Sie ein Szenario für die Verarbeitung von Einzelhandelsbestellungen mithilfe des Event Grid MQTT Brokers:
- Thema:
retail/orders - Freigegebene Gruppe:
order-workers - Klienten: Worker1, Worker2, Worker3
Fluss:
- Bestellungen werden veröffentlicht an
retail/orders - Alle Mitarbeiter abonnieren Folgendes:
$share/order-workers/retail/orders - Event Grid MQTT Broker verteilt:
- Auftrag 1 → Worker1
- Auftrag 2 → Arbeiter2
- Auftrag 3 → Worker3
Jede Bestellung wird einmal verarbeitet, während das System horizontal skaliert wird.
Protokollverhalten und Einschränkungen
MQTT-Versionsunterstützung
- Feature nur MQTT 5
- MQTT 3.1.1-Clients, die
$share/...versuchen, werden getrennt
Semantik der Nachrichtenübermittlung
- Jede Nachricht wird an einen Client pro Gruppe übermittelt.
- Die Bereitstellung folgt der Semantik 'at-least-once' (QoS 1)
Nachrichtensortierung
- Keine strikte Reihenfolgegarantie für Gruppenmitglieder
Sitzungsverhalten
- Der Sitzungsablauf wirkt sich auf die Nachrichtenübermittlung aus:
- Wenn ein Client die Verbindung trennt und die Sitzung abläuft, werden Nachrichten möglicherweise erneut zugewiesen.
- Dauerhafte Sitzungen verbessern die Zuverlässigkeit
Anwendungsfälle im Event Grid MQTT-Broker
Geteilte Abonnements eignen sich ideal für:
- IoT-Telemetrieverarbeitung mit hohem Durchsatz: Verteilen von Telemetrie oder Ereignissen über mehrere Verarbeitungsdienste hinweg.
- Backend-Workerpools / Microservices: Sie ermöglichen zustandslosen Diensten, Ereignisse ohne Duplizierung zu verarbeiten.
- Unified Namespace (UNS)-Consumer: Effiziente Nutzung industrieller Datenströme mit hohem Durchsatz.
Wann man freigegebene Abonnements verwenden sollte
Verwenden Sie freigegebene Abonnements, wenn:
- Sie benötigen parallele Nachrichtenverarbeitung.
- Ein einzelner Verbraucher kann die Last nicht verarbeiten.
- Sie möchten skalierbare und robuste Architekturen.
- Sie möchten das Erstellen eines benutzerdefinierten Lastenausgleichs vermeiden.