Zephyrnet-logotyp

MQTT vs AMQP för IoT-kommunikation: Head to Head

Datum:

MQTT vs AMQP för IoT-kommunikation: Head to Head
Illustration: © IoT för alla

Med den exponentiella tillväxten av Internet of Things (IoT) blir det allt viktigare att hantera kommunikation mellan enheter och system. IoT-kommunikation möjliggörs av meddelandeköprotokoll som MQTT och AMQP som underlättar utbyte av information på ett strukturerat och effektivt sätt.

Två populära protokoll som driver IoT är MQTT-protokoll (Message Queuing Telemetry Transport) och AMQP (Advanced Message Queuing Protocol). Låt oss utforska vart och ett av dessa protokoll i detalj och förklara deras viktigaste skillnader och faktorerna att tänka på när du väljer mellan de två.

Vikten av Message Queuing Protocols

Inom IoT behöver enheter som sträcker sig från enkla sensorer till komplexa maskiner kommunicera med varandra och med centrala system. Dessa enheter fungerar ofta i miljöer med begränsade resurser, såsom låg effekt eller opålitliga nätverk.

Meddelandeköprotokoll som MQTT, som är designad för sådana miljöer, gör det möjligt för dessa enheter att kommunicera effektivt och tillförlitligt.

I distribuerade system behöver komponenter ofta utbyta information med bibehållen lös koppling. Protokoll som AMQP, med sina robusta funktioner och komplexa routingmöjligheter, ger ett pålitligt sätt för denna kommunikation.

Dessa protokoll säkerställer att meddelanden levereras tillförlitligt och att systemen kan skalas och utvecklas oberoende.

Vad är MQTT?

MQTT, förkortning för Message Queuing Telemetry Transport, är ett lätt protokoll för publicering/prenumeration av meddelanden. Det introducerades av IBM 1999.

Designad för begränsade enheter och nätverk med låg bandbredd, hög latens eller opålitliga nätverk, är MQTT perfekt för maskin-till-maskin eller IoT-användningsfall där ett litet kodavtryck krävs.

MQTT fungerar baserat på publicera/prenumerera modell. I denna modell skapar en producent, känd som en utgivare, meddelanden och en konsument, känd som en prenumerant, tar emot dem.

Interaktionen mellan utgivaren och abonnenten sköts av en mäklare. Mäklaren ansvarar för att distribuera meddelanden från publicister till prenumeranter.

Enkelheten med MQTT ligger i dess minimala protokollkommandon. Den har bara en handfull kommandon, vilket gör den lätt att implementera i olika enheter och system.

Dessutom möjliggör dess kvalitetsnivåer för meddelandeleveransbekräftelse, vilket säkerställer att inget meddelande går förlorat under överföringen. Låt oss utforska MQTT mer i detalj.

MQTT Transport och inramning

MQTT kan använda TCP, TLS, WebSocket eller QUIC som sitt transportlager, skapa förbindelser, upprätta sessioner och sända meddelanden på ett tillförlitligt sätt mellan kunder och mäklare.

MQTT-ramar består av en 2-byte fast rubrik, en variabel rubrik och en nyttolast med variabel längd. Rubriken innehåller information som pakettyp, servicenivå, återstående längd, paket-ID och egenskaper. Den binära nyttolasten innehåller det faktiska meddelandet som sänds.

MQTT definierar 15 typer av kontrollpaket baserat på de binära ramarna i version 5.0-protokollspecifikationerna. Några av de vanliga paketen som används för att ansluta, publicera och prenumerera inkluderar CONNECT, CONACK, PUBLISH, PUBACK och SUBSCRIBE.

MQTT QoS

MQTT stöder tre tjänstekvaliteter för meddelandeleverans:

  • QoS0 "Högst en gång": Meddelanden levereras i enlighet med de bästa ansträngningarna av operativ miljö; meddelandeförlust kan inträffa.
  • QoS1 "Minst en gång": Meddelanden kommer garanterat fram, men dubbletter kan förekomma.
  • QoS2 "Exakt en gång": Meddelanden kommer garanterat att komma exakt en gång.

MQTT Fördelar och nackdelar

Alla tillgångar på ett och samma ställe

  • Enkelhet: Den enklaste designen för publicering och prenumeration, enklare att konfigurera, utveckla och hantera.
  • Lätt och effektiv: MQTT-meddelanden har endast 2-typs header-overhead med låg bandbreddsanvändning vilket gör protokollet idealiskt för enheter med låg effekt och låg bandbredd.
  • skalbarhet: Skala till tiotals miljoner MQTT-anslutningar, ämnen och prenumerationer.
  • Pålitlig meddelandeleverans: Tre kvalitetsnivåer för att säkerställa tillförlitlig meddelandeleverans, även över opålitliga nätverk.
  • Låg latens: Meddelandeleverans nästan i realtid med ensiffrig millisekundsfördröjning tack vare den enkla ämnesbaserade pub/undermodellen.
  • Säkerhet: MQTT stöder säker kommunikation över TLS/SSL eller QUIC och olika autentiseringsmekanismer som använder LDAP-, JWT-, PSK- och X.509-certifikat.
  • Kompatibilitet och integration: MQTT kan integreras med många programmeringsspråk, operativsystem och mjukvaruplattformar.

Nackdelar:

  • MQTT saknar store-and-forward-kö.

Vad är AMQP?

AMQP, Advanced Message Queuing Protocol, är ett protokoll som stöder ett brett utbud av meddelandemönster och erbjuder en robust uppsättning funktioner. Den skapades av JP Morgan Chase 2003. Den är designad för system som kräver en hög nivå av tillförlitlighet och funktionalitet.

Till skillnad från MQTT är AMQP ett peer-to-peer-protokoll, vilket betyder att det stöder direkt kommunikation mellan producent och konsument.

AMQP använder en modell där meddelanden skickas till växlar, som sedan dirigerar meddelandena till lämpliga köer baserat på regler som kallas bindningar. Konsumenten hämtar sedan meddelandet från kön.

Denna modell möjliggör komplexa routing- och distributionsstrategier, vilket gör AMQP lämplig för komplexa distribuerade system.

Styrkan med AMQP ligger i dess omfattande funktionsuppsättning. Den stöder en mängd olika meddelandeegenskaper och leveranslägen, inklusive beständig meddelandehantering, vilket säkerställer att meddelandena inte går förlorade även om mäklaren startar om.

AMQP Exchange och bindningar

I AMQP är ett utbyte som en e-postöverföringsagent som inspekterar e-post och bestämmer utifrån routingnycklar och tabeller. En routingnyckel motsvarar ett e-postmeddelande med To:, Cc:, eller Bcc: adresser, utan serverinformation (routing är internt inom en AMQP-server). En bindning är som en post i e-postöverföringsagentens routingtabell.

AMQP definierar fyra typer av utbyten:

  1. Direkt (punkt-till-punkt): Meddelanden dirigeras direkt till den kö som är bunden till växeln.
  2. Fanout: Meddelanden dirigeras till varje kö som är bunden till växeln.
  3. Ämne (publicera-prenumerera): Meddelanden dirigeras till köer baserat på routingnyckeln och bindningsmönstret till växeln.
  4. Rubriker (publicera-prenumerera): Meddelanden dirigeras till köer baserat på mönstermatchning av meddelandehuvuden.

AMQP Transport och inramning

AMQP är ett binärt protokoll byggt på TCP/IP, där en pålitlig, beständig, strömorienterad förbindelse upprättas mellan en klient och en mäklare. Flera kanaler kan öppnas på en enda uttagsanslutning, vilket gör att flera dataströmmar kan överföras samtidigt.

AMQP-ramar i version 1.0 består av en 8-byte fast rubrik, en valfri utökad rubrik och en binär nyttolast med variabel längd. Den fasta rubriken innehåller information om ramtyp, kanalnummer och storleken på nyttolasten.

Nyttolasten innehåller det faktiska meddelandet som överförs, tillsammans med eventuell associerad metadata.

AMQP fördelar och nackdelar

Alla tillgångar på ett och samma ställe

  • Lagra och vidarebefordra kö: AMQP stöder store-and-forward-köer på bekostnad av viss effektivitet och ytterligare komplexitet (jämfört med MQTT).
  • Flexibel meddelandedirigering: AMQP tillhandahåller flexibel meddelandedirigering, inklusive punkt-till-punkt, publicera-prenumerera och fan-out.
  • Säkerhet: AMQP stöder säkerhetsåtgärder som TLS och SASL för kryptering och autentisering.
  • Ekosystem: AMQP har ett stort och moget ekosystem av serverimplementationer med öppen källkod och klientbibliotek för olika programmeringsspråk.

Nackdelar:

  • Komplex: AMQP introducerar många koncept i sin modell och kan vara komplexa och utmanande att förstå, ställa in och hantera.
  • Tungvikt: AMQP introducerar multiplexering i sitt transportlager med "kanaler". Varje AMQP-ram har en header-overhead på 8 byte.
  • Bakåtkompatibilitet: Det största problemet med AMQP är att versionerna 0.9.1 och 1.0 är helt olika, vilket leder till mer komplexitet i detta lösningsutrymme.
  • Skalbarhet och prestanda: AMQP kan ha begränsad skalbarhet och låg prestanda i vissa användningsfall. Detta beror på dess arkitektur, som medför större komplexitet och overhead jämfört med lätta protokoll som MQTT.

MQTT vs AMQP: Head-to-Head

Följande tabell sammanfattar vår jämförelse mellan AMQP och MQTT.

  AMQP MQTT
Definition Advanced Message Queuing Protocol Message Queuing Telemetri Transport
Origins Uppfanns av JPMorgan Chase 2003 Uppfanns av IBM 1999
arkitektur EBQ (Exchange-Binding-Queue) Ämnesbaserad Publicera/Prenumerera
Kärnkoncept ExchangesQueuesBindingsRouting-nycklar Ämnen Prenumerationer
Huvudprotokollversioner · 0.9.1 släpptes i november 2008
· 1.0 släpptes i oktober 2012
· 3.1.1 släpptes i december 2015
· 5.0 släpptes i mars 2019
Meddelandeparadigm    
Punkt till punkt ✅ (lagra och vidarebefordra köer) Partiellt stöd
Publicera/prenumerera
Fan-out ✅ mer skalbar
Fan-in
Begär/Svara ✅ i version 5.0
Tryck dra
Transportnätverk    
TCP
TLS / SSL
WebSocket
QUIC
Inramning    
Ramstruktur Ramar är indelade i tre distinkta områden:
Ramhuvud med fast bredd,
Variabel bredd utökad rubrik,
Ramkropp med variabel bredd.
Ett MQTT-kontrollpaket består av upp till tre delar:
Fast rubrik
Variabel rubrik
nyttolast
Fixa rubrikstorlek 8 Bytes 2 Bytes
Nyttolastinnehåll Binary Binary
Max nyttolaststorlek 2GB 256MB
Leverans    
QoS 0: Högst en gång
QoS 1: Minst en gång
QoS 2: Exakt en gång
Säkerhet SSL / TLS SSL / TLS

Faktorer att tänka på när du väljer

När man står inför ett beslut mellan MQTT vs AMQP finns det flera faktorer att ta hänsyn till.

Utvärdering baserad på användningsfallskrav

Valet mellan MQTT och AMQP beror till stor del på användningsfallets krav. Om du har att göra med begränsade enheter eller opålitliga nätverk kan MQTT med sin lätta natur vara det bättre alternativet. Om ditt användningsfall kräver komplex routing och hög tillförlitlighet, skulle AMQP vara mer lämpligt.

Utvärdering baserad på systemarkitektur

Systemarkitekturen spelar också en roll i beslutet. MQTT:s enkelhet gör det till ett bra val för system med en tydlig och enkel kommunikationsmodell. AMQP, med sin flexibilitet och robusta funktionsuppsättning, är bättre lämpad för komplexa system med olika kommunikationsbehov.

Utvärdering baserad på nätverksförhållanden

Nätverksförhållanden är en annan kritisk faktor. MQTT fungerar bra i nätverk med låg bandbredd, hög latens eller opålitliga nätverk. AMQP, å andra sidan, kräver en pålitlig nätverksanslutning på grund av dess högre overhead.

Utvärdering baserad på erforderlig tjänstekvalitet

MQTT tillhandahåller tre nivåer av tjänstekvalitet, vilket möjliggör flexibilitet i meddelandeleveransgarantier. AMQP, med sin ihållande meddelandehantering, säkerställer hög tillförlitlighet i meddelandeleverans.

Ta ditt beslut

Både MQTT och AMQP har sina styrkor och lämpar sig för olika scenarier. Att förstå deras viktigaste skillnader och utvärdera dina krav mot dessa skillnader hjälper dig att fatta ett välgrundat beslut när du väljer. Kom ihåg att det rätta valet beror på dina specifika behov och begränsningar.

plats_img

Senaste intelligens

plats_img