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.
Eine Throttle-Transformationsrate begrenzt, wie oft sie Nachrichten zu einem MQTT-Thema weiterleitet. Anstatt Nachrichten basierend auf ihrem Inhalt zu löschen, wirft die Throttle-Transformation Nachrichten basierend darauf, wann sie sie verarbeitet, und leitet höchstens eine Nachricht pro Thema-Muster innerhalb jedes konfigurierten Intervalls weiter. Verwenden Sie Drosselung, um nachgelagerte Systeme vor Bursty- oder Hochfrequenzquellen zu schützen, ohne den Nachrichteninhalt zu ändern.
Eine Übersicht über Datenflussdiagramme und die Art und Weise, wie Transformationen in einer Pipeline erstellt werden, finden Sie in der Übersicht über Datenflussdiagramme.
Prerequisites
- Eine Instanz von Azure IoT Einsatz, die in einem Kubernetes-Cluster bereitgestellt wird. Weitere Informationen finden Sie unter Deploy Azure IoT Einsatz.
- Die Bereitstellung erstellt automatisch einen Standard-Registry-Endpunkt namens
default, der aufmcr.microsoft.comverweist. Die integrierten Transformationen verwenden diesen Endpunkt.
Skalierungsbeschränkung für zustandsbehaftete Diagramme
Important
Fenster- und Gashebel-Transformationen sind zustandsvoll. Jede Instanz behält ihren eigenen Zustand, und Instanzen teilen diesen Zustand nicht miteinander. Wenn die Anzahl der Instanzen im Datenflussprofil größer als eins ist, verteilen geteilte Abonnements Nachrichten über die Instanzen, sodass jede Instanz nur eine Teilmenge der Nachrichten sieht. Eine Fenstertransformation berechnet dann Aggregationen wie Durchschnitte, Summen und Zählungen über einen partiellen Datensatz, und eine Throttle-Transformation setzt die konfigurierte Ratenbegrenzung unabhängig in jeder Instanz durch, anstatt über die gesamte Pipeline hinweg.
Setze die Anzahl der Datenflussprofil-Instanzen für jeden Datenflussgraphen, der eine Fenster- oder Throttle-Transformation verwendet, auf 1 . Zustandslose Datenflussgraphen, die ausschließlich Mapping-, Filter-, Verzweigungs- und Concatenate-Transformationen verwenden, können sicher höhere Instanzzahlen nutzen, um den Durchsatz zu erhöhen.
Wie die Gashebeltransformation funktioniert
Die Drosselungstransformation bewertet das Thema jeder eingehenden Nachricht anhand einer geordneten Liste von Regeln pro Thema:
- Der Gewinner ist derjenige, der das erste Spiel gewinnt. Die Transformation bewertet die Regeln in der Reihenfolge. Die erste Regel, deren
topicMuster mit dem Thema der Nachricht übereinstimmt, bestimmt, ob die Transformation die Nachricht weiterleitet. Die Transformation prüft spätere Regeln nicht, selbst wenn sie ebenfalls übereinstimmen würden. - Nicht übereinstimmende Themen werden durchgelassen. Wenn keine Regel mit dem Thema der Nachricht übereinstimmt, leitet die Transformation die Nachricht ohne Throttling weiter.
- Die Weiterleitung erfolgt zeitbasiert, nicht zählbasiert. Bei einer abgestimmten Regel leitet die Transformation die erste von ihr verarbeitete Nachricht weiter und lässt dann jede nachfolgende Nachricht in diesem Muster fallen, bis das konfigurierte Intervall (
1000 / maxMessagesPerSecondMillisekunden, aufgerundet) seit der letzten weitergeleiteten Nachricht verstrichen ist. Dieses Verhalten begrenzt die maximale Rate, erlaubt aber keine Bursts, um frühere Drops auszugleichen. - Gemeinsamer Zustand pro Muster, nicht pro Topic. Wenn das
topic-Muster einer Regel einen Platzhalter verwendet, teilen alle konkreten Themen, die ihr entsprechen, innerhalb einer Transformationsinstanz denselben Drosselungszustand. Zum Beispiel begrenzt eine einzelnesensors/+Regel die kombinierte Rate übersensors/temperatureundsensors/humidity, nicht jede einzelne unabhängig voneinander. -
0lässt alles fallen. Das Festlegen vonmaxMessagesPerSecondauf0für eine Regel verwirft jede Nachricht, die dem Muster dieser Regel entspricht. - Das Timing basiert auf der Bearbeitungszeit, nicht auf dem Inhalt der Nachrichten. Die Transformation verwendet ihre monotone Uhr, wenn sie jede Nachricht verarbeitet. Es liest kein Zeitstempelfeld aus dem Message-Payload.
Note
Die Drosselungsrtansformation legt lediglich fest, ob eine Nachricht weitergeleitet oder verworfen wird. Sie verändert den Inhalt der Nachrichten nie.
Konfiguriere die Drosselregeln pro Thema
Definiere Drosselregeln im Konfigurationsschlüssel throttle (nicht rules) als JSON-Objekt mit einem perTopicThrottles Array.
In der Drosselungstransformationskonfiguration fügen Sie eine oder mehrere Drosselungsregeln hinzu. Geben Sie für jede Regel Folgendes an:
| Setting | Description |
|---|---|
| Topic | Das abzugleichende MQTT-Topic-Muster. Unterstützt die Platzhalter + (eine Ebene) und # (mehrere Ebenen). |
| Maximal Nachrichten pro Sekunde | Die maximale Weiterleitungsrate für Themen, die diesem Muster entsprechen. Auf 0 setzen, um alle passenden Nachrichten zu verwerfen. |
Mit dieser Regel leitet die Transformation die erste sensors/temperature von ihr verarbeitete Nachricht weiter und entfernt dann alle weiteren Nachrichten zu diesem Thema, die sie weniger als 100 Millisekunden später verarbeitet (1000 / 10). Diese Regel betrifft keine anderen Themen als sensors/temperature.
Jeder Eintrag in perTopicThrottles besitzt folgende Eigenschaften:
| Eigentum | Erforderlich | Description |
|---|---|---|
topic |
Yes | Das MQTT-Themenmuster passt dazu. Unterstützt die Platzhalter + (eine Ebene) und # (mehrere Ebenen). |
maxMessagesPerSecond |
Yes | Maximale Weiterleitungsrate für Themen, die diesem Muster entsprechen, in Nachrichten pro Sekunde. Die Transformation erlaubt Bruchwerte. Zum Beispiel 0.1 erlaubt eine Nachricht alle 10 Sekunden. Muss null oder eine positive, endliche Zahl sein. Setzen Sie dies auf 0, um alle Nachrichten zu verwerfen, die dem Muster entsprechen. Timing hat eine Genauigkeit von 1 Millisekunde, sodass Werte größer als 1000 denselben effektiven Grenzwert wie 1000haben. |
Important
Jedes topic-Muster in perTopicThrottles muss eindeutig sein. Die Transformation lehnt das Konfigurieren derselben Musterzeichenfolge während der Initialisierung mehrmals ab.
Verwenden Sie mehrere Regeln pro Thema
Da die Transformation die Regeln der Reihe nach bewertet und das erste Match gewinnt, listen Sie spezifischere Muster auf, bevor sie allgemeinere auflisten, wenn Sie möchten, dass sie ein eigenes Rate-Limit haben:
Fügen Sie zwei Regeln hinzu, in folgender Reihenfolge:
| Bestellung | Thema | Maximal Nachrichten pro Sekunde |
|---|---|---|
| 1 | sensors/temperature |
10 |
| 2 | sensors/# |
1 |
Nachrichten auf sensors/temperature entsprechen der ersten Regel und sind auf 10 Nachrichten pro Sekunde begrenzt. Nachrichten zu einem anderen sensors/* Thema (zum Beispiel sensors/humidity) entsprechen der zweiten Regel und teilen sich ein kombiniertes Limit von 1 Nachricht pro Sekunde.
Important
Die Reihenfolge ist wichtig. Wenn die sensors/# Regel zuerst aufgeführt würde, würde sie auch Nachrichten übereinstimmen sensors/temperature , und die Transformation würde nie die spezifischere Regel erreichen.
Themengruppen mittels Platzhalter drosseln
Das Muster topic unterstützt dieselben Wildcards wie MQTT-Themenfilter:
| Platzhalter | Übereinstimmungen | Beispiel |
|---|---|---|
+ |
Genau eine Themenebene |
sensors/+/status entspricht sensors/line1/status, aber nicht sensors/line1/sub/status |
# |
Null oder mehr verbleibende Themenstufen, muss das letzte Segment sein |
sensors/# entspricht sensors, sensors/temperatureund sensors/line1/temperature |
Alle konkreten Themen, die derselben Platzhalterregel entsprechen, teilen sich einen Drosselungszustand.
Füge eine Regel mit Thema sensors/+ hinzu und maximiere Nachrichten pro Sekunde 1.
Mit dieser Regel werden eine Nachricht auf sensors/temperature und eine Nachricht auf sensors/humidity, die im Abstand von 500 Millisekunden verarbeitet werden, nicht beide weitergeleitet – die zweite wird verworfen, weil sie auf dasselbe gemeinsame 1‑Sekunden‑Intervall wie die erste angerechnet wird, unabhängig davon, zu welchem konkreten Topic sie gehört.
Note
Ein nacktes # Muster passt zu jedem Thema und wendet innerhalb jeder Transformationsinstanz eine einheitliche kombinierte Ratenbegrenzung an.
Alle Nachrichten zu einem Thema verwerfen
Setze maxMessagesPerSecond auf 0 so, dass jede Nachricht, die einem Muster entspricht, droppt, ohne die Regel oder das Thema aus deiner Pipeline zu entfernen:
Füge eine Regel mit Thema debug/# hinzu und maximiere Nachrichten pro Sekunde 0.
Ein Datenflussdiagramm mit Drosselung bereitstellen
Um End-to-End-Throttling anzuwenden, sollte ein Datenflussgraph bereitgestellt werden, der eine Quelle, eine Throttle-Transformation und ein Ziel verbindet. Verwenden Sie das Tool, das zu Ihrem Arbeitsablauf passt.
Erstellen Sie in der Betriebsumgebung ein Datenflussdiagramm mit einer Drosselungstransformation:
- Fügen Sie eine Quelle hinzu, die aus Ihrem MQTT-Topic gelesen wird.
- Fügen Sie eine Gaspedal-Transformation hinzu. Füge pro Thema eine oder mehrere Regeln hinzu, von den am wenigsten bis am wenigsten spezifischen.
- Fügen Sie ein Ziel hinzu, das an Ihr Ausgabe-Topic sendet.
Einschränkungen
- Verändert keine Nachrichten. Die Throttle-Transformation leitet Nachrichten nur weiter oder verwirft sie; sie ändert deren Inhalt nicht.
- Der Gewinner ist derjenige, der das erste Spiel gewinnt. Die Transformation gilt nur für die erste Regel, deren
topicMuster mit dem Thema der Nachricht übereinstimmt. Führen Sie spezifischere Muster vor allgemeineren auf. - Geteilter Zustand gemäß Muster. Eine Wildcard-Regel teilt ihr Ratenlimit für jedes konkrete Thema, das sie trifft. Es gibt kein separates Limit pro Thema.
- Keine Spitzen. Die Transformation setzt eine Mindestzeit zwischen den weitergeleiteten Nachrichten pro abgestimmtem Muster vor. Es sammelt keine ungenutzte Kapazität aus früheren, langsameren Phasen an.
- Millisekundenpräzision. Das minimale Drosselintervall beträgt 1 Millisekunde, daher erhöhen höhere Werte als
1000fürmaxMessagesPerSeconddie effektive Weiterleitungsrate nicht über 1.000 Nachrichten pro Sekunde. - Das Timing basiert auf der Bearbeitungszeit, nicht auf dem Inhalt der Nachrichten. Die Transformation verwendet die Zeit, in der jede Nachricht verarbeitet wird, nicht die Zeit, zu der der Broker sie empfangen hat, oder ein Zeitstempelfeld in der Nutzlast.
- Der Zustand ist lokal und im Speicher. Jede Datenflussprofil-Instanz behält ihren eigenen Drosselungszustand. Ein Neustart oder Neukonfiguration der Transformation setzt diesen Zustand zurück. Wenn ein Profil mehrere Instanzen hat, setzt jede Instanz die konfigurierte Rate unabhängig durch.
- Doppelte Themenmuster sind nicht erlaubt. Die Konfiguration desselben
topicStrings mehrmals inperTopicThrottlesschlägt fehl, wenn die Transformation initialisiert wird.