Thema Alias ​​– MQTT 5.0 Neue Funktionen

Im Vergleich zu MQTT v3.1 und v3.1.1 bietet MQTT v5 mehr neue Funktionen. Wir werden versuchen, diese Features auf leicht verständliche Weise darzustellen und ihre Auswirkungen auf die Entwicklungen zu diskutieren. Einiges haben wir bereits besprochen neue Funktionen in MQTT v5und wir werden weiter diskutieren Themen-Alias heute.

Was ist ein Themen-Alias

Topic Alias ​​ermöglicht es Benutzern, den möglicherweise langen und wiederholt verwendeten Topic-Namen auf eine 2-Byte-Ganzzahl zu reduzieren, um den Bandbreitenverbrauch beim Veröffentlichen von Nachrichten zu reduzieren.

Diese 2-Byte-Ganzzahl ist als Attributfeld im Variablenkopf des codiert PUBLISH Paket. Und es ist begrenzt durch Themen-Alias-Maximum zwischen Auftraggeber und Makler ausgetauschtCONNECT und CONNACK Pakete. Solange diese Grenze nicht überschritten wird, kann jeder Themenname auf eine Ganzzahl reduziert werden.

Warum Themen-Alias ​​verwenden?

Wenn der Client im MQTT v3-Protokoll eine große Anzahl von Nachrichten zum selben Thema (über dieselbe MQTT-Verbindung) veröffentlichen muss, wird der Themenname insgesamt wiederholt PUBLISH Pakete, was zu einer Verschwendung von Bandbreitenressourcen führt. Gleichzeitig ist das Analysieren der UTF-8-Zeichenfolge desselben Themennamens jedes Mal eine Verschwendung von Rechenressourcen für den Server.

Beispielsweise meldet ein Sensor Temperatur und Luftfeuchtigkeit mit einer festen Frequenz von einem Standort aus A: Es veröffentlicht zum Thema /location/A/temperature (23 Bytes) für jede Temperaturmeldung Es veröffentlicht auch zum Thema /location/A/humidity (20 Byte) für die Feuchtemeldungen. Ohne Themenaliase, nicht nur für die erste veröffentlichte Nachricht, jede weitere PUBLISH Paket muss die Themennamen (insgesamt 53 Byte) immer wieder durch die Verbindung tragen. Und für den Broker muss er die Standortthemen wiederholt parsen.

Wie wir sehen können, besteht der Zweck der Einführung der Topic-Alias-Funktion in MQTT v5.0 hauptsächlich darin, den Ressourcenverbrauch sowohl bei Netzwerkressourcen als auch bei CPU-Ressourcen zu reduzieren.

Wie werden Themenaliase verwendet?

Themen-Aliaslebenszyklus und -umfang

Themenaliase werden jeweils vom Client und Server verwaltet, und der Lebenszyklus und Umfang sind auf die aktuelle Verbindung beschränkt. Wenn die Themenaliase nach dem Trennen erneut verwendet werden müssen, wird die Zuordnungsbeziehung von topic alias <=> topic name muss umgebaut werden.

Themen-Alias-Maximum

Bevor der MQTT-Client oder -Server mit der Verwendung von Themenaliasen beginnen kann, müssen sie sich auf die maximale Anzahl von Themenaliasen einigen, die in der aktuellen Verbindung zulässig sind. Dieser Teil des Informationsaustausches erfolgt im CONNECT Paket und die CONNACK Paket. Das Topic Alias Maximum ist in den Variablenköpfen der kodiert CONNECT und CONNACK Pakete als Nachrichtenattribut.

Legen Sie das MQTT-Topic-Alias-Maximum gegenseitig fest

Stellen Sie das Topic Alias ​​Maximum gegenseitig ein

Topic Alias Maximum beim Kunden CONNECT packet gibt die maximale Anzahl an Topic-Aliasnamen an, die der Server in dieser Verbindung verwenden kann. Ebenso in der CONNACK Paket, das vom Server gesendet wird, gibt der Wert die maximale Anzahl von Topic-Aliasnamen an, die von der Gegenseite (Client) in der aktuellen Verbindung verwendet werden können.

Ein Themen-Alias ​​kann reichen von 1 zu Topic Alias Maximum. Einstellung Topic Alias Maximum zu 0 für den Peer, um die Verwendung von Themen-Aliasnamen zu verbieten.

Erstellen und Verwenden eines Themenalias

Wenn ein Client (oder Server) eine sendet PUBLISH Paket, es kann eine Ein-Byte-Kennung mit einem Wert von verwenden 0x23 im Attribut des Variablenheaders, um anzuzeigen, dass die nächsten 2 Bytes die Nummer des Themen-Aliasnamens sind.

Die Topic-Alias-Nummer darf jedoch weder 0 noch größer als die sein Topic Alias Maximum setzen in die CONNACK (CONNECT) vom Server (Client) gesendetes Paket.

Nach Erhalt eines PUBLISH Paket mit einem Topic-Alias ​​und einem nicht leeren Topic-Namen, wird das empfangende Ende eine Abbildungsbeziehung zwischen dem Topic-Alias ​​und dem Topic-Namen herstellen. In dem PUBLISH Pakete, die danach gesendet werden, kann der Topic-Alias ​​mit einer Länge von 2 Bytes verwendet werden, um eine Nachricht zu veröffentlichen, und die empfangende Seite verwendet die zuvor erstellte Abbildungsbeziehung von topic alias <=> topic name um das Thema für die Nachrichten zu finden.

Da ein solches Mapping jeweils auf beiden Seiten gepflegt wird (dh nicht identisch sein muss), können der Client und der Server unter Verwendung derselben Alias-Nummer zu unterschiedlichen Topics veröffentlichen.

MQTT-Client und -Broker verwalten jeweils ihre Aliase

MQTT-Client und -Broker verwalten jeweils ihre Aliase

Verwendung eines unbekannten Themenalias

Wenn ein Themen-Alias ​​in der PUBLISH Paket vorher nicht erstellt wurde, d. h. das empfangende Ende hat die Zuordnungsbeziehung zwischen dem aktuellen Themenalias und einem Themennamen nicht aufgebaut, und das Themennamensfeld im variablen Header dieser Nachricht ist leer, das empfangende Ende sollte a senden DISCONNECT Paket mit einem REASON_CODE von 0x82 um die Verbindung zu schließen.

Unbekannter Themenalias

Unbekannter Themenalias

Thema-Alias ​​neu erstellen

Eine bereits erstellte Zuordnung von Aliasnamen zu Themennamen kann mit einer neuen neu erstellt werden PUBLISH Paket mit einem Themenalias und einem nicht leeren Themennamen.

Als Beispiel im folgenden Diagramm wird das Thema alias 123 die zuvor für das Thema Temperatur verwendet wurde, wird jetzt aktualisiert, um das Thema Feuchtigkeit darzustellen.

MQTT-Client und -Broker erstellen Topic-Aliase neu

MQTT-Client und -Broker erstellen Topic-Aliase neu

Fazit

Als neue Funktion in MQTT v5 bietet Topic-Alias ​​eine flexiblere Möglichkeit, das Pub-Sub-Messaging-Modell zu verwenden. Bei Nachrichten, die wiederholt zu einer begrenzten Gruppe von Themen veröffentlicht werden, insbesondere bei großen Mengen, können Themenaliase sowohl Netzwerk- als auch Computerressourcen effektiv einsparen.

Ursprünglich erschienen bei

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *