Zephyrnet-Logo

MQTT vs. AMQP für IoT-Kommunikation: Kopf an Kopf

Datum:

MQTT vs. AMQP für IoT-Kommunikation: Kopf an Kopf
Abbildung: © IoT für alle

Mit dem exponentiellen Wachstum des Internets der Dinge (IoT) gewinnt die Verwaltung der Kommunikation zwischen Geräten und Systemen zunehmend an Bedeutung. Die IoT-Kommunikation wird durch Message-Queuing-Protokolle wie MQTT und AMQP ermöglicht, die den Informationsaustausch auf strukturierte und effiziente Weise ermöglichen.

Zwei beliebte Protokolle, die das IoT vorantreiben, sind: MQTT-Protokoll (Message Queuing Telemetry Transport) und AMQP (Advanced Message Queuing Protocol). Lassen Sie uns jedes dieser Protokolle im Detail untersuchen und ihre wichtigsten Unterschiede sowie die Faktoren erläutern, die bei der Wahl zwischen den beiden zu berücksichtigen sind.

Bedeutung von Message Queuing-Protokollen

Im IoT müssen Geräte, von einfachen Sensoren bis hin zu komplexen Maschinen, untereinander und mit zentralen Systemen kommunizieren. Diese Geräte werden häufig in Umgebungen mit begrenzten Ressourcen betrieben, beispielsweise in Netzwerken mit geringem Stromverbrauch oder in unzuverlässigen Netzwerken.

Message-Queuing-Protokolle wie MQTT, die für solche Umgebungen konzipiert ist, ermöglichen diesen Geräten eine effiziente und zuverlässige Kommunikation.

In verteilten Systemen müssen Komponenten häufig Informationen austauschen und gleichzeitig eine lose Kopplung aufrechterhalten. Protokolle wie AMQP bieten mit ihren robusten Funktionen und komplexen Routing-Fähigkeiten ein zuverlässiges Mittel für diese Kommunikation.

Diese Protokolle stellen sicher, dass Nachrichten zuverlässig zugestellt werden und die Systeme unabhängig voneinander skalieren und weiterentwickeln können.

Was ist MQTT?

MQTT, kurz für Message Queuing Telemetry Transport, ist ein leichtes Publish/Subscribe-Messaging-Protokoll. Es wurde 1999 von IBM eingeführt.

MQTT wurde für eingeschränkte Geräte und Netzwerke mit geringer Bandbreite, hoher Latenz oder unzuverlässigen Geräten entwickelt und eignet sich perfekt für Machine-to-Machine- oder IoT-Anwendungsfälle, bei denen ein kleiner Code-Footprint erforderlich ist.

MQTT basiert auf dem Publish/Subscribe-Modell. In diesem Modell erstellt ein Produzent, der als Herausgeber bezeichnet wird, Nachrichten, und ein Verbraucher, der als Abonnent bezeichnet wird, empfängt sie.

Die Interaktion zwischen Herausgeber und Abonnent wird von einem Broker verwaltet. Der Broker ist für die Verteilung der Nachrichten von Herausgebern an Abonnenten verantwortlich.

Die Einfachheit von MQTT liegt in seinen minimalen Protokollbefehlen. Es verfügt nur über eine Handvoll Befehle und lässt sich daher problemlos in verschiedenen Geräten und Systemen implementieren.

Darüber hinaus ermöglichen die Servicequalitätsstufen eine Bestätigung der Nachrichtenzustellung, um sicherzustellen, dass bei der Übertragung keine Nachricht verloren geht. Lassen Sie uns MQTT genauer untersuchen.

MQTT-Transport und Framing

MQTT kann TCP, TLS, WebSocket oder verwenden QUIC als Transportschicht, die Verbindungen herstellt, Sitzungen aufbaut und Nachrichten zuverlässig zwischen Clients und Brokern überträgt.

MQTT-Frames bestehen aus einem 2-Byte-festen Header, einem variablen Header und einer Nutzlast variabler Länge. Der Header enthält Informationen wie den Pakettyp, die Servicequalität, die verbleibende Länge, die Paket-ID und Eigenschaften. Die binäre Nutzlast enthält die tatsächlich übertragene Nachricht.

MQTT definiert 15 Arten von Steuerpaketen basierend auf den Binärrahmen in den Protokollspezifikationen der Version 5.0. Zu den gängigen Paketen, die zum Verbinden, Veröffentlichen und Abonnieren verwendet werden, gehören CONNECT, CONACK, PUBLISH, PUBACK und SUBSCRIBE.

MQTT-QoS

MQTT unterstützt drei Dienstqualitäten für die Nachrichtenzustellung:

  • QoS0 „Höchstens einmal“: Nachrichten werden nach besten Kräften der Betriebsumgebung zugestellt; Es kann zu Nachrichtenverlust kommen.
  • QoS1 „Mindestens einmal“: Nachrichten kommen garantiert an, es kann jedoch zu Duplikaten kommen.
  • QoS2 „Genau einmal“: Nachrichten kommen garantiert genau einmal an.

Vor- und Nachteile von MQTT

Vorteile:

  • Einfachheit: Das einfachste Publish-Subscribe-Design, einfacher einzurichten, zu entwickeln und zu verwalten.
  • Leicht und effizient: MQTT-Nachrichten haben nur 2-Typ-Header-Overhead bei geringer Bandbreitennutzung, was das Protokoll ideal für Geräte mit geringem Stromverbrauch und geringer Bandbreite macht.
  • Skalierbarkeit: Skalieren Sie auf zig Millionen MQTT-Verbindungen, Themen und Abonnements.
  • Zuverlässige Nachrichtenzustellung: Drei Quality of Service-Stufen sorgen für eine zuverlässige Nachrichtenübermittlung, selbst über unzuverlässige Netzwerke.
  • Geringe Wartezeit: Nachrichtenübermittlung nahezu in Echtzeit mit einer Latenzzeit im einstelligen Millisekundenbereich aufgrund des einfachen themenbasierten Pub/Sub-Modells.
  • Sicherheit: MQTT unterstützt sichere Kommunikation über TLS/SSL oder QUIC und verschiedene Authentifizierungsmechanismen mithilfe von LDAP-, JWT-, PSK- und X.509-Zertifikaten.
  • Kompatibilität und Integration: MQTT kann in viele Programmiersprachen, Betriebssysteme und Softwareplattformen integriert werden.

Nachteile:

  • Bei MQTT fehlt die Store-and-Forward-Warteschlange.

Was ist AMQP?

AMQP (Advanced Message Queuing Protocol) ist ein Protokoll, das eine Vielzahl von Nachrichtenmustern unterstützt und eine Reihe robuster Funktionen bietet. Es wurde 2003 von JP Morgan Chase entwickelt. Es wurde für Systeme entwickelt, die ein hohes Maß an Zuverlässigkeit und Funktionalität erfordern.

Im Gegensatz zu MQTT ist AMQP ein Peer-to-Peer-Protokoll, das heißt, es unterstützt die direkte Kommunikation zwischen Producer und Consumer.

AMQP verwendet ein Modell, bei dem Nachrichten an Börsen gesendet werden, die die Nachrichten dann basierend auf Regeln, die als Bindungen bezeichnet werden, an entsprechende Warteschlangen weiterleiten. Der Verbraucher ruft dann die Nachricht aus der Warteschlange ab.

Dieses Modell ermöglicht komplexe Routing- und Verteilungsstrategien, wodurch AMQP für komplexe verteilte Systeme geeignet ist.

Die Stärke von AMQP liegt in seinem umfangreichen Funktionsumfang. Es unterstützt eine Vielzahl von Nachrichteneigenschaften und Zustellungsmodi, einschließlich persistenter Nachrichten, die sicherstellen, dass die Nachrichten auch bei einem Neustart des Brokers nicht verloren gehen.

AMQP-Austausch und -Bindungen

In AMQP ist ein Austausch wie ein E-Mail-Übertragungsagent, der E-Mails prüft und auf der Grundlage von Routing-Schlüsseln und -Tabellen entscheidet. Ein Routing-Schlüssel entspricht einer E-Mail mit An:-, Cc:- oder Bcc:-Adressen ohne Serverinformationen (das Routing erfolgt intern innerhalb eines AMQP-Servers). Eine Bindung ist wie ein Eintrag in der Routing-Tabelle des E-Mail-Transfer-Agenten.

AMQP definiert vier Arten von Börsen:

  1. Direkt (Punkt-zu-Punkt): Nachrichten werden direkt an die an die Vermittlungsstelle gebundene Warteschlange weitergeleitet.
  2. Ausschwärmen: Nachrichten werden an jede an die Vermittlungsstelle gebundene Warteschlange weitergeleitet.
  3. Thema (veröffentlichen-abonnieren): Nachrichten werden basierend auf dem Routing-Schlüssel und dem Bindungsmuster an die Vermittlungsstelle an Warteschlangen weitergeleitet.
  4. Header (Publish-Subscribe): Nachrichten werden basierend auf dem Mustervergleich der Nachrichtenheader an Warteschlangen weitergeleitet.

AMQP Transport und Framing

AMQP ist ein auf TCP/IP basierendes Binärprotokoll, bei dem eine zuverlässige, dauerhafte, streamorientierte Verbindung zwischen einem Client und einem Broker hergestellt wird. Auf einer einzigen Socket-Verbindung können mehrere Kanäle geöffnet werden, sodass mehrere Datenströme gleichzeitig übertragen werden können.

AMQP-Frames in Version 1.0 bestehen aus einem 8-Byte-festen Header, einem optionalen erweiterten Header und einer binären Nutzlast variabler Länge. Der feste Header enthält Informationen über den Frame-Typ, die Kanalnummer und die Größe der Nutzlast.

Die Nutzlast enthält die tatsächlich übertragene Nachricht sowie alle zugehörigen Metadaten.

Vor- und Nachteile von AMQP

Vorteile:

  • Store-and-Forward-Warteschlangen: AMQP unterstützt Store-and-Forward-Warteschlangen auf Kosten einer gewissen Effizienz und zusätzlicher Komplexität (im Vergleich zu MQTT).
  • Flexible Nachrichtenweiterleitung: AMQP bietet flexibles Nachrichtenrouting, einschließlich Punkt-zu-Punkt, Publish-Subscribe und Fan-Out.
  • Sicherheit: AMQP unterstützt Sicherheitsmaßnahmen wie TLS und SASL zur Verschlüsselung und Authentifizierung.
  • Ökosystem: AMQP verfügt über ein großes und ausgereiftes Ökosystem an Open-Source-Serverimplementierungen und Client-Bibliotheken für verschiedene Programmiersprachen.

Nachteile:

  • Komplex: AMQP führt viele Konzepte in sein Modell ein und kann komplex und schwierig zu verstehen, einzurichten und zu verwalten sein.
  • Schwergewicht: AMQP führt Multiplexing in seiner Transportschicht mit „Kanälen“ ein. Jeder AMQP-Frame hat einen Header-Overhead von 8 Bytes.
  • Rückwärtskompatibilität: Das größte Problem von AMQP besteht darin, dass die Versionen 0.9.1 und 1.0 völlig unterschiedlich sind, was zu einer höheren Komplexität in diesem Lösungsbereich führt.
  • Skalierbarkeit und Leistung: AMQP weist in einigen Anwendungsfällen möglicherweise eine eingeschränkte Skalierbarkeit und geringe Leistung auf. Dies liegt an seiner Architektur, die im Vergleich zu einfachen Protokollen wie MQTT eine größere Komplexität und einen höheren Overhead mit sich bringt.

MQTT vs. AMQP: Kopf-an-Kopf-Rennen

Die folgende Tabelle fasst unseren Vergleich zwischen AMQP und MQTT zusammen.

  AMQP MQTT
Definition Erweitertes Message Queuing-Protokoll Message Queuing-Telemetrietransport
Origins 2003 von JPMorgan Chase erfunden 1999 von IBM erfunden
Architektur EBQ (Exchange-Binding-Queue) Themenbasiertes Publish/Subscribe
Kernkonzepte ExchangesQueuesBindingsRouting-Schlüssel ThemenAbonnements
Hauptprotokollversionen · 0.9.1 erschienen im November 2008
· 1.0 veröffentlicht im Oktober 2012
· 3.1.1 erschienen im Dezember 2015
· 5.0 erschienen im März 2019
Messaging-Paradigmen    
Punkt zu Punkt ✅ (Store-and-Forward-Warteschlangen) Teilunterstützung
Veröffentlichen/Abonnieren
Ausschwärmen ✅ skalierbarer
Fan-in
Anfrage/Antwort ✅ in Version 5.0
Drücken ziehen
Transport    
TCP
TLS / SSL
WebSocket
QUIC
Einrahmung    
Rahmenstruktur Frames sind in drei verschiedene Bereiche unterteilt:
Rahmenkopf mit fester Breite,
Erweiterter Header mit variabler Breite,
Rahmenkörper mit variabler Breite.
Ein MQTT-Kontrollpaket besteht aus bis zu drei Teilen:
Fester Header
Variabler Header
Nutzlast: XNUMX Kg
Header-Größe korrigieren 8 Bytes 2 Bytes
Payload-Inhalt Binär Binär
Maximale Nutzlastgröße 2GB 256MB
LIEFERUNG    
QoS 0: Höchstens einmal
QoS 1: Mindestens einmal
QoS 2: Genau einmal
Sicherheit SSL / TLS SSL / TLS

Bei der Auswahl zu berücksichtigende Faktoren

Bei der Entscheidung zwischen MQTT und AMQP müssen mehrere Faktoren berücksichtigt werden.

Bewertung basierend auf Anwendungsfallanforderungen

Die Wahl zwischen MQTT und AMQP hängt weitgehend von den Anforderungen des Anwendungsfalls ab. Wenn Sie es mit eingeschränkten Geräten oder unzuverlässigen Netzwerken zu tun haben, ist MQTT aufgrund seiner leichten Beschaffenheit möglicherweise die bessere Option. Wenn Ihr Anwendungsfall komplexes Routing und hohe Zuverlässigkeit erfordert, wäre AMQP besser geeignet.

Bewertung basierend auf der Systemarchitektur

Auch die Systemarchitektur spielt bei der Entscheidung eine Rolle. Die Einfachheit von MQTT macht es zu einer guten Wahl für Systeme mit einem klaren und einfachen Kommunikationsmodell. AMQP eignet sich aufgrund seiner Flexibilität und seines robusten Funktionsumfangs besser für komplexe Systeme mit unterschiedlichen Kommunikationsanforderungen.

Bewertung basierend auf Netzwerkbedingungen

Ein weiterer kritischer Faktor sind die Netzwerkbedingungen. MQTT funktioniert gut in Netzwerken mit geringer Bandbreite, hoher Latenz oder unzuverlässigen Netzwerken. AMQP hingegen erfordert aufgrund seines höheren Overheads eine zuverlässige Netzwerkverbindung.

Bewertung basierend auf der erforderlichen Servicequalität

MQTT bietet drei Servicequalitätsstufen und ermöglicht so Flexibilität bei den Garantien für die Nachrichtenzustellung. AMQP sorgt mit seinem persistenten Messaging für eine hohe Zuverlässigkeit bei der Nachrichtenzustellung.

Treffen Sie Ihre Entscheidung

Sowohl MQTT als auch AMQP haben ihre Stärken und eignen sich für unterschiedliche Szenarien. Wenn Sie die wichtigsten Unterschiede verstehen und Ihre Anforderungen anhand dieser Unterschiede bewerten, können Sie bei der Auswahl eine fundierte Entscheidung treffen. Denken Sie daran, dass die richtige Wahl von Ihren spezifischen Bedürfnissen und Einschränkungen abhängt.

spot_img

Neueste Intelligenz

spot_img