Logotipo de Zephyrnet

MQTT vs AMQP para comunicaciones IoT: cara a cara

Fecha:

MQTT vs AMQP para comunicaciones IoT: cara a cara
Ilustración: © IoT para todos

Con el crecimiento exponencial del Internet de las cosas (IoT), la gestión de la comunicación entre dispositivos y sistemas está ganando importancia. La comunicación de IoT es posible gracias a protocolos de cola de mensajes como MQTT y AMQP que facilitan el intercambio de información de manera estructurada y eficiente.

Dos protocolos populares que impulsan la IoT son los Protocolo MQTT (Transporte de telemetría de Message Queue Server) y AMQP (Protocolo avanzado de Message Queue Server). Exploremos cada uno de estos protocolos en detalle y expliquemos sus diferencias clave y los factores a considerar al elegir entre los dos.

Importancia de los protocolos de cola de mensajes

En IoT, dispositivos que van desde simples sensores hasta máquinas complejas necesitan comunicarse entre sí y con sistemas centrales. Estos dispositivos suelen funcionar en entornos con recursos limitados, como redes poco fiables o de bajo consumo.

Protocolos de cola de mensajes como MQTT, que está diseñado para dichos entornos, permite que estos dispositivos se comuniquen de manera eficiente y confiable.

En los sistemas distribuidos, los componentes a menudo necesitan intercambiar información manteniendo un acoplamiento flexible. Protocolos como AMQP, con sus sólidas características y complejas capacidades de enrutamiento, proporcionan un medio confiable para esta comunicación.

Estos protocolos garantizan que los mensajes se entreguen de manera confiable y que los sistemas puedan escalar y evolucionar de forma independiente.

¿Qué es MQTT?

MQTT, abreviatura de Message Queue Server Telemetry Transport, es un protocolo ligero de mensajería de publicación/suscripción. Fue introducido por IBM en 1999.

Diseñado para dispositivos restringidos y redes de bajo ancho de banda, alta latencia o poco confiables, MQTT es perfecto para casos de uso de máquina a máquina o IoT donde se requiere una huella de código pequeña.

MQTT opera basándose en el modelo de publicación/suscripción. En este modelo, un productor, conocido como editor, crea mensajes y un consumidor, conocido como suscriptor, los recibe.

La interacción entre el editor y el suscriptor la gestiona un corredor. El corredor es responsable de distribuir los mensajes de los editores a los suscriptores.

La simplicidad de MQTT radica en sus comandos de protocolo mínimos. Tiene sólo un puñado de comandos, lo que facilita su implementación en varios dispositivos y sistemas.

Además, sus niveles de calidad de servicio permiten la confirmación de la entrega de mensajes, asegurando que ningún mensaje se pierda durante la transmisión. Exploremos MQTT con más detalle.

Transporte y enmarcado MQTT

MQTT puede utilizar TCP, TLS, WebSocket o QUIC como su capa de transporte, creando conexiones, estableciendo sesiones y transmitiendo mensajes de manera confiable entre clientes y corredores.

Las tramas MQTT constan de un encabezado fijo de 2 bytes, un encabezado variable y una carga útil de longitud variable. El encabezado contiene información como el tipo de paquete, la calidad del nivel de servicio, la longitud restante, el ID del paquete y las propiedades. La carga útil binaria contiene el mensaje real que se transmite.

MQTT define 15 tipos de paquetes de control basados ​​en las tramas binarias en las especificaciones del protocolo de la versión 5.0. Algunos de los paquetes comunes utilizados para conectarse, publicar y suscribirse incluyen CONNECT, CONACK, PUBLISH, PUBACK y SUBSCRIBE.

Calidad de servicio MQTT

MQTT admite tres calidades de servicio para la entrega de mensajes:

  • QoS0 “Como máximo una vez”: Los mensajes se entregan de acuerdo con los mejores esfuerzos del entorno operativo; Puede ocurrir pérdida de mensajes.
  • QoS1 “Al menos una vez”: Se garantiza que los mensajes llegarán, pero pueden producirse duplicados.
  • QoS2 “Exactamente una vez”: Se garantiza que los mensajes llegarán exactamente una vez.

Ventajas y desventajas de MQTT

Pros:

  • Simplicidad: El diseño de publicación y suscripción más simple, más fácil de configurar, desarrollar y administrar.
  • Ligero y eficiente: Los mensajes MQTT tienen solo una sobrecarga de encabezado de 2 tipos con un uso bajo de ancho de banda, lo que hace que el protocolo sea ideal para dispositivos de bajo consumo y ancho de banda.
  • Escalabilidad: Escale a decenas de millones de conexiones, temas y suscripciones MQTT.
  • Entrega de mensajes confiable: Tres niveles de calidad de servicio para garantizar la entrega confiable de mensajes, incluso en redes no confiables.
  • Baja latencia: Entrega de mensajes casi en tiempo real con latencia de milisegundos de un dígito debido al modelo simple de publicación/suscripción basado en temas.
  • Seguridad: MQTT admite comunicaciones seguras a través de TLS/SSL o QUIC y varios mecanismos de autenticación utilizando certificados LDAP, JWT, PSK y X.509.
  • Compatibilidad e integración: MQTT se puede integrar con muchos lenguajes de programación, sistemas operativos y plataformas de software.

Contras:

  • MQTT carece de colas de almacenamiento y reenvío.

¿Qué es AMQP?

AMQP, Protocolo avanzado de cola de mensajes, es un protocolo que admite una amplia gama de patrones de mensajería y ofrece un sólido conjunto de funciones. Fue creado por JP Morgan Chase en 2003. Está diseñado para sistemas que requieren un alto nivel de confiabilidad y funcionalidad.

A diferencia de MQTT, AMQP es un protocolo peer-to-peer, lo que significa que admite la comunicación directa entre el productor y el consumidor.

AMQP utiliza un modelo en el que los mensajes se envían a intercambios, que luego los enrutan a colas apropiadas según reglas llamadas enlaces. Luego, el consumidor recupera el mensaje de la cola.

Este modelo permite estrategias complejas de enrutamiento y distribución, lo que hace que AMQP sea adecuado para sistemas distribuidos complejos.

La fortaleza de AMQP radica en su amplio conjunto de funciones. Admite una variedad de propiedades de mensajes y modos de entrega, incluida la mensajería persistente, que garantiza que los mensajes no se pierdan incluso si se reinicia el intermediario.

Intercambio y enlaces AMQP

En AMQP, un intercambio es como un agente de transferencia de correo electrónico que inspecciona el correo electrónico y decide en función de claves y tablas de enrutamiento. Una clave de enrutamiento corresponde a un correo electrónico con direcciones Para:, CC: o CCO:, sin información del servidor (el enrutamiento es interno dentro de un servidor AMQP). Un enlace es como una entrada en la tabla de enrutamiento del agente de transferencia de correo electrónico.

AMQP define cuatro tipos de intercambios:

  1. Directo (punto a punto): Los mensajes se enrutan directamente a la cola vinculada al intercambio.
  2. Abanico: Los mensajes se enrutan a cada cola vinculada al intercambio.
  3. Tema (publicar-suscribir): los mensajes se enrutan a colas según la clave de enrutamiento y el patrón de enlace al intercambio.
  4. Encabezados (publicar-suscribir): los mensajes se enrutan a colas según la coincidencia de patrones de los encabezados de los mensajes.

Transporte y enmarcado AMQP

AMQP es un protocolo binario construido sobre TCP/IP, donde se establece una conexión confiable, persistente y orientada a la transmisión entre un cliente y un corredor. Se pueden abrir múltiples canales en una única conexión de socket, lo que permite transferir múltiples flujos de datos simultáneamente.

Las tramas AMQP en la versión 1.0 constan de un encabezado fijo de 8 bytes, un encabezado extendido opcional y una carga útil binaria de longitud variable. El encabezado fijo contiene información sobre el tipo de trama, el número de canal y el tamaño de la carga útil.

La carga útil contiene el mensaje real que se transmite, junto con los metadatos asociados.

Ventajas y desventajas de AMQP

Pros:

  • Cola de almacenamiento y reenvío: AMQP admite colas de almacenamiento y reenvío a expensas de cierta eficiencia y complejidad adicional (en comparación con MQTT).
  • Enrutamiento de mensajes flexible: AMQP proporciona enrutamiento de mensajes flexible, incluido punto a punto, publicación-suscripción y distribución.
  • Seguridad: AMQP admite medidas de seguridad como TLS y SASL para cifrado y autenticación.
  • Ecosistema: AMQP tiene un ecosistema grande y maduro de implementaciones de servidores de código abierto y bibliotecas de clientes para varios lenguajes de programación.

Contras:

  • Complejo: AMQP introduce muchos conceptos en su modelo y puede ser complejo y desafiante de entender, configurar y administrar.
  • De peso pesado: AMQP introduce multiplexación en su capa de transporte con "canales". Cada trama AMQP tiene una cabecera de 8 bytes.
  • Compatibilidad con versiones anteriores: El mayor problema de AMQP es que las versiones 0.9.1 y 1.0 son completamente diferentes, lo que genera una mayor complejidad en este espacio de solución.
  • Escalabilidad y rendimiento: AMQP puede tener una escalabilidad limitada y un rendimiento bajo en algunos casos de uso. Esto se debe a su arquitectura, que impone una mayor complejidad y gastos generales en comparación con protocolos livianos como MQTT.

MQTT vs AMQP: cara a cara

La siguiente tabla resume nuestra comparación entre AMQP y MQTT.

  AMQP MQTT
Definición Protocolo avanzado de Message Queue Server Transporte de telemetría de colas de mensajes
Orígenes Inventado por JPMorgan Chase en 2003 Inventado por IBM en 1999
Arquitectura EBQ (cola de enlace de intercambio) Publicación/suscripción basada en temas
Conceptos básicos ExchangesQueuesBindingsClaves de enrutamiento TemasSuscripciones
Versiones del protocolo principal · 0.9.1 lanzado en noviembre de 2008
· 1.0 lanzado en octubre de 2012
· 3.1.1 lanzado en diciembre de 2015
· 5.0 lanzado en marzo de 2019
Paradigmas de mensajería    
Punto a punto ✅ (colas de almacenamiento y reenvío) apoyo parcial
Publicar / Suscribirse
Abanico ✅ más escalable
Abanico
Solicitar / Responder ✅ en la versión 5.0
Empujar tirar
Transportes    
TCP
TLS / SSL
WebSocket
QUIC
Enmarcado    
Estructura del marco Los marcos se dividen en tres áreas distintas:
Cabecera de marco de ancho fijo,
Cabecera extendida de ancho variable,
Cuerpo del marco de ancho variable.
Un paquete de control MQTT consta de hasta tres partes:
Encabezado fijo
Encabezado variable
carga útil
Corregir tamaño de encabezado 8 Bytes 2 Bytes
Contenido de carga útil Binario Binario
Tamaño máximo de carga útil 2GB 256MB
Entrega    
QoS 0: como máximo una vez
QoS 1: al menos una vez
QoS 2: exactamente una vez
Seguridad SSL / TLS SSL / TLS

Factores a considerar al elegir

Cuando se enfrenta a una decisión entre MQTT y AMQP, hay varios factores a considerar.

Evaluación basada en requisitos de casos de uso

La elección entre MQTT y AMQP depende en gran medida de los requisitos del caso de uso. Si se trata de dispositivos restringidos o redes poco confiables, MQTT, por su naturaleza liviana, podría ser la mejor opción. Si su caso de uso requiere enrutamiento complejo y alta confiabilidad, entonces AMQP sería más adecuado.

Evaluación basada en la arquitectura del sistema

La arquitectura del sistema también influye en la decisión. La simplicidad de MQTT lo convierte en una buena opción para sistemas con un modelo de comunicación claro y sencillo. AMQP, con su flexibilidad y su sólido conjunto de funciones, es más adecuado para sistemas complejos con diversas necesidades de comunicación.

Evaluación basada en las condiciones de la red

Las condiciones de la red son otro factor crítico. MQTT funciona bien en redes con poco ancho de banda, alta latencia o poco confiables. AMQP, por otro lado, requiere una conexión de red confiable debido a su mayor sobrecarga.

Evaluación basada en la calidad de servicio requerida

MQTT proporciona tres niveles de calidad de servicio, lo que permite flexibilidad en las garantías de entrega de mensajes. AMQP, con su mensajería persistente, garantiza una alta confiabilidad en la entrega de mensajes.

Tomando tu decisión

Tanto MQTT como AMQP tienen sus puntos fuertes y son adecuados para diferentes escenarios. Comprender sus diferencias clave y evaluar sus requisitos en comparación con estas diferencias lo ayudará a tomar una decisión informada al elegir. Recuerde, la elección correcta depende de sus necesidades y limitaciones específicas.

punto_img

Información más reciente

punto_img