Zephyrnet-logo

MQTT versus AMQP voor IoT-communicatie: Head-to-Head

Datum:

MQTT versus AMQP voor IoT-communicatie: Head-to-Head
Illustratie: © IoT For All

Met de exponentiële groei van het Internet of Things (IoT) wordt het beheren van de communicatie tussen apparaten en systemen steeds belangrijker. IoT-communicatie wordt mogelijk gemaakt door message queuing-protocollen zoals MQTT en AMQP die de uitwisseling van informatie op een gestructureerde en efficiënte manier vergemakkelijken.

Twee populaire protocollen die het IoT aandrijven zijn de MQTT-protocol (Message Queuing Telemetry Transport) en AMQP (Advanced Message Queuing Protocol). Laten we elk van deze protocollen in detail onderzoeken en hun belangrijkste verschillen uitleggen, evenals de factoren waarmee rekening moet worden gehouden bij het kiezen tussen de twee.

Belang van Message Queuing-protocollen

In IoT moeten apparaten, variërend van eenvoudige sensoren tot complexe machines, met elkaar en met centrale systemen communiceren. Deze apparaten werken vaak in omgevingen met beperkte bronnen, zoals netwerken met een laag stroomverbruik of onbetrouwbare netwerken.

Message Queuing-protocollen zoals MQTT, die voor dergelijke omgevingen is ontworpen, zorgen ervoor dat deze apparaten efficiënt en betrouwbaar kunnen communiceren.

In gedistribueerde systemen moeten componenten vaak informatie uitwisselen terwijl de losse koppeling behouden blijft. Protocollen zoals AMQP, met zijn robuuste functies en complexe routeringsmogelijkheden, bieden een betrouwbaar middel voor deze communicatie.

Deze protocollen zorgen ervoor dat berichten betrouwbaar worden afgeleverd en dat de systemen onafhankelijk kunnen schalen en evolueren.

Wat is MQTT?

MQTT, een afkorting voor Message Queuing Telemetry Transport, is een lichtgewicht berichtenprotocol voor publiceren/abonneren. Het werd in 1999 door IBM geïntroduceerd.

Ontworpen voor apparaten met beperkte bandbreedte en netwerken met een lage bandbreedte, hoge latentie of onbetrouwbare netwerken, is MQTT perfect voor machine-to-machine of IoT-gebruiksscenario's waarbij een kleine codevoetafdruk vereist is.

MQTT werkt op basis van de publicatie/abonneermodel. In dit model creëert een producent, bekend als uitgever, berichten, en ontvangt een consument, bekend als abonnee, deze.

De interactie tussen uitgever en abonnee wordt beheerd door een makelaar. De makelaar is verantwoordelijk voor het verspreiden van de berichten van uitgevers naar abonnees.

De eenvoud van MQTT ligt in de minimale protocolopdrachten. Het heeft slechts een handvol commando's, waardoor het eenvoudig te implementeren is in verschillende apparaten en systemen.

Bovendien maken de kwaliteit van de dienstverlening het mogelijk om de bezorging van berichten te bevestigen, zodat geen enkel bericht verloren gaat tijdens de verzending. Laten we MQTT in meer detail verkennen.

MQTT-transport en framing

MQTT kan TCP, TLS, WebSocket of QUIC als transportlaag, waardoor verbindingen worden gecreëerd, sessies worden opgezet en berichten op betrouwbare wijze worden verzonden tussen klanten en makelaars.

MQTT-frames bestaan ​​uit een vaste header van 2 bytes, een variabele header en een payload met variabele lengte. De header bevat informatie zoals het pakkettype, de kwaliteit van het serviceniveau, de resterende lengte, de pakket-ID en eigenschappen. De binaire payload bevat het daadwerkelijke bericht dat wordt verzonden.

MQTT definieert 15 soorten besturingspakketten op basis van de binaire frames in de protocolspecificaties van versie 5.0. Enkele van de gebruikelijke pakketten die worden gebruikt om verbinding te maken, te publiceren en zich te abonneren, zijn CONNECT, CONACK, PUBLISH, PUBACK en AUBSCRIBE.

MQTT QoS

MQTT ondersteunt drie servicekwaliteiten voor het bezorgen van berichten:

  • QoS0 “Maximaal één keer”: Berichten worden afgeleverd volgens de beste inspanningen van de besturingsomgeving; berichtverlies kan optreden.
  • QoS1 “Minstens één keer”: Berichten komen gegarandeerd aan, maar er kunnen duplicaten voorkomen.
  • QoS2 “Precies één keer”: Berichten komen gegarandeerd precies één keer aan.

MQTT-voordelen en nadelen

Voors:

  • Eenvoud: Het eenvoudigste ontwerp voor publiceren en abonneren, eenvoudiger in te stellen, te ontwikkelen en te beheren.
  • Lichtgewicht en efficiënt: MQTT-berichten hebben slechts 2-type header-overhead met een laag bandbreedtegebruik, waardoor het protocol ideaal is voor apparaten met een laag vermogen en een lage bandbreedte.
  • schaalbaarheid: Schaal naar tientallen miljoenen MQTT-verbindingen, onderwerpen en abonnementen.
  • Betrouwbare berichtbezorging: Drie Quality of Service-niveaus om een ​​betrouwbare bezorging van berichten te garanderen, zelfs via onbetrouwbare netwerken.
  • Lage latentie: Bijna realtime bezorging van berichten met een latentie van één cijfer milliseconde dankzij het eenvoudige, op onderwerpen gebaseerde pub/sub-model.
  • Veiligheid: MQTT ondersteunt beveiligde communicatie via TLS/SSL of QUIC en verschillende authenticatiemechanismen met behulp van LDAP-, JWT-, PSK- en X.509-certificaten.
  • Compatibiliteit en integratie: MQTT kan worden geïntegreerd met veel programmeertalen, besturingssystemen en softwareplatforms.

nadelen:

  • MQTT mist store-and-forward-wachtrijen.

Wat is AMQP?

AMQP, Advanced Message Queuing Protocol, is een protocol dat een breed scala aan berichtpatronen ondersteunt en een robuuste reeks functies biedt. Het is in 2003 gemaakt door JP Morgan Chase. Het is ontworpen voor systemen die een hoog niveau van betrouwbaarheid en functionaliteit vereisen.

In tegenstelling tot MQTT is AMQP een peer-to-peer-protocol, wat betekent dat het directe communicatie tussen producent en consument ondersteunt.

AMQP gebruikt een model waarbij berichten naar uitwisselingen worden verzonden, die de berichten vervolgens naar de juiste wachtrijen routeren op basis van regels die bindingen worden genoemd. De consument haalt het bericht vervolgens op uit de wachtrij.

Dit model maakt complexe routerings- en distributiestrategieën mogelijk, waardoor AMQP geschikt is voor complexe gedistribueerde systemen.

De kracht van AMQP ligt in de uitgebreide featureset. Het ondersteunt een verscheidenheid aan berichteigenschappen en bezorgingsmodi, inclusief permanente berichtenuitwisseling, waardoor de berichten niet verloren gaan, zelfs als de makelaar opnieuw opstart.

AMQP-uitwisseling en bindingen

In AMQP lijkt een uitwisseling op een e-mailoverdrachtagent die e-mail inspecteert en beslist op basis van routeringssleutels en tabellen. Een routeringssleutel komt overeen met een e-mail met de adressen Aan:, Cc: of Bcc:, zonder serverinformatie (routering is intern binnen een AMQP-server). Een binding is als een vermelding in de routeringstabel van de e-mailoverdrachtagent.

AMQP definieert vier soorten uitwisselingen:

  1. Direct (punt-tot-punt): berichten worden rechtstreeks doorgestuurd naar de wachtrij die aan de centrale is gekoppeld.
  2. Uitwaaieren: berichten worden doorgestuurd naar elke wachtrij die aan de centrale is gekoppeld.
  3. Onderwerp (publiceren-abonneren): berichten worden naar wachtrijen gerouteerd op basis van de routeringssleutel en het bindingspatroon met de centrale.
  4. Headers (publiceren-abonneren): berichten worden doorgestuurd naar wachtrijen op basis van patroonovereenkomst van berichtkoppen.

AMQP Transport en Framing

AMQP is een binair protocol gebouwd op TCP/IP, waarbij een betrouwbare, persistente, streamgeoriënteerde verbinding tot stand wordt gebracht tussen een client en een makelaar. Op één socket-verbinding kunnen meerdere kanalen worden geopend, waardoor meerdere datastromen tegelijkertijd kunnen worden overgedragen.

AMQP-frames in versie 1.0 bestaan ​​uit een vaste header van 8 bytes, een optionele uitgebreide header en een binaire payload met variabele lengte. De vaste header bevat informatie over het frametype, het kanaalnummer en de grootte van de payload.

De payload bevat het daadwerkelijke bericht dat wordt verzonden, samen met eventuele bijbehorende metagegevens.

AMQP-voordelen en nadelen

Voors:

  • Store-and-forward-wachtrij: AMQP ondersteunt store-and-forward wachtrijen ten koste van enige efficiëntie en extra complexiteit (vergeleken met MQTT).
  • Flexibele berichtroutering: AMQP biedt flexibele berichtroutering, inclusief point-to-point, publiceren-abonneren en fan-out.
  • Veiligheid: AMQP ondersteunt beveiligingsmaatregelen zoals TLS en SASL voor encryptie en authenticatie.
  • Ecosysteem: AMQP heeft een groot en volwassen ecosysteem van open-source serverimplementaties en clientbibliotheken voor verschillende programmeertalen.

nadelen:

  • Complex: AMQP introduceert veel concepten in zijn model en kan complex en uitdagend zijn om te begrijpen, in te stellen en te beheren.
  • Zwaargewicht: AMQP introduceert multiplexing in zijn transportlaag met ‘kanalen’. Elk AMQP-frame heeft een header-overhead van 8 bytes.
  • Achterwaartse compatibiliteit: Het grootste probleem van AMQP is dat versies 0.9.1 en 1.0 totaal verschillend zijn, wat leidt tot meer complexiteit in deze oplossingsruimte.
  • Schaalbaarheid en prestaties: AMQP heeft in sommige gebruiksscenario's mogelijk een beperkte schaalbaarheid en lage prestaties. Dit komt door de architectuur, die een grotere complexiteit en overhead met zich meebrengt in vergelijking met lichtgewicht protocollen zoals MQTT.

MQTT versus AMQP: Head-to-Head

De volgende tabel vat onze vergelijking tussen AMQP en MQTT samen.

  AMQP MQTT
Definitie Geavanceerd Message Queuing-protocol Message Queuing-telemetrietransport
Oorsprong Uitgevonden door JPMorgan Chase in 2003 Uitgevonden door IBM in 1999
Architectuur EBQ (Exchange-Binding-Wachtrij) Op onderwerp gebaseerd publiceren/abonneren
Hoofdconcepten UitwisselingenWachtrijenBindingenRoutingsleutels OnderwerpenAbonnementen
Belangrijkste protocolversies · 0.9.1 uitgebracht in november 2008
· 1.0 uitgebracht in oktober 2012
· 3.1.1 uitgebracht in december 2015
· 5.0 uitgebracht in maart 2019
Berichtenparadigma's    
Point-to-Point ✅ (wachtrijen voor opslaan en doorsturen) Gedeeltelijke ondersteuning
Publiceren/Abonneren
Uitwaaieren ✅ schaalbaarder
Fan-in
Verzoek/antwoord ✅ in versie 5.0
Duwen trekken
Transport    
TCP
TLS / SSL
WebSocket
QUIC
Framing    
Frameconstructie Frames zijn verdeeld in drie verschillende gebieden:
Framekop met vaste breedte,
Uitgebreide header met variabele breedte,
Framelichaam met variabele breedte.
Een MQTT-controlepakket bestaat uit maximaal drie delen:
Vaste kop
Variabele kop
payload
Kopgrootte corrigeren 8 Bytes 2 Bytes
Inhoud van de lading binair binair
Maximale ladinggrootte 2GB 256MB
Verzending    
QoS 0: Maximaal één keer
QoS 1: Tenminste één keer
QoS 2: Precies één keer
Security SSL / TLS SSL / TLS

Factoren waarmee u rekening moet houden bij het kiezen

Wanneer u wordt geconfronteerd met een beslissing tussen MQTT en AMQP, zijn er verschillende factoren waarmee u rekening moet houden.

Evaluatie op basis van Use Case-vereisten

De keuze tussen MQTT en AMQP hangt grotendeels af van de use case-vereisten. Als u te maken heeft met beperkte apparaten of onbetrouwbare netwerken, is MQTT met zijn lichtgewicht karakter wellicht de betere optie. Als uw gebruiksscenario complexe routering en hoge betrouwbaarheid vereist, dan is AMQP geschikter.

Evaluatie op basis van systeemarchitectuur

Ook de systeemarchitectuur speelt een rol bij de beslissing. De eenvoud van MQTT maakt het een goede keuze voor systemen met een duidelijk en eenvoudig communicatiemodel. AMQP is met zijn flexibiliteit en robuuste functieset beter geschikt voor complexe systemen met uiteenlopende communicatiebehoeften.

Evaluatie op basis van netwerkomstandigheden

Netwerkomstandigheden zijn een andere kritische factor. MQTT presteert goed in netwerken met een lage bandbreedte, hoge latentie of onbetrouwbare netwerken. AMQP vereist daarentegen een betrouwbare netwerkverbinding vanwege de hogere overhead.

Evaluatie op basis van de vereiste servicekwaliteit

MQTT biedt drie serviceniveaus, waardoor flexibiliteit in de leveringsgaranties van berichten mogelijk is. AMQP zorgt met zijn persistente berichtenuitwisseling voor een hoge betrouwbaarheid bij het bezorgen van berichten.

Uw beslissing nemen

Zowel MQTT als AMQP hebben hun sterke punten en zijn geschikt voor verschillende scenario's. Als u de belangrijkste verschillen begrijpt en uw vereisten aan deze verschillen vergelijkt, kunt u een weloverwogen beslissing nemen bij uw keuze. Vergeet niet dat de juiste keuze afhangt van uw specifieke behoeften en beperkingen.

spot_img

Laatste intelligentie

spot_img