Message Queuing Telemetry Transport (MQTT) es un protocolo de mensajería ligero y ampliamente utilizado, basado en el modelo de publicación-suscripción, ideal para conectar dispositivos y aplicaciones del Internet de las cosas (IoT) o de máquina a máquina (M2M) a través de Internet. Diseñado para operar eficientemente en entornos con bajo ancho de banda o limitada potencia, es una opción preferida para aplicaciones que involucran un gran número de clientes remotos. MQTT se emplea en sectores tan variados como la electrónica de consumo, la automoción, el transporte, la fabricación y la sanidad.
Los dispositivos o aplicaciones conectados a través de MQTT se conocen como clientes. Estos clientes publican o se suscriben a mensajes sobre un tema específico o sobre múltiples temas. Los clientes suscritos reciben todos los mensajes publicados en ese tema, lo que permite un intercambio de datos eficiente y tolerante a fallos entre muchos dispositivos y servicios.
En el corazón de la arquitectura MQTT se encuentra el intermediario, un servidor responsable de rastrear a los clientes (y los temas a los que están suscritos), procesar los mensajes y enrutarlos a los sistemas apropiados.
Se han adoptado como estándar varias versiones clave del protocolo MQTT. La organización OASIS gestiona las revisiones del protocolo y mantiene una especificación completa para cada versión. Cada revisión de MQTT ha ampliado el conjunto de características del protocolo, por lo que es importante saber a qué versión de MQTT se adhieren sus dispositivos y su intermediario.
Existen varios tipos de mensajes MQTT, y cada tipo de mensaje contiene un formato específico que los dispositivos y aplicaciones conformes deben seguir. Las revisiones del protocolo MQTT varían en cuanto a formato y tipos de mensajes. En cada especificación del protocolo MQTT se puede encontrar una lista completa de tipos de mensajes.
Los tres tipos de mensajes más comunes son CONNECT, PUBLISH y SUBSCRIBE. Cada mensaje MQTT contiene un encabezado, una carga útil y marcas opcionales. Dependiendo del tipo de mensaje, la carga útil puede ser de longitud variable. Por ejemplo, en un mensaje PUBLISH, la carga útil contiene los datos que se enviarán a todos los dispositivos suscritos, y el tamaño del campo de datos influye directamente en el tamaño total del mensaje. De manera predeterminada, los dispositivos MQTT se conectan a través del puerto 1883 de forma no segura o del puerto 8883 cuando se utiliza el cifrado SSL/TLS.
Los coches inteligentes son un excelente ejemplo del uso de MQTT en la práctica. Con la incorporación de funciones avanzadas, como diagnóstico remoto, gestión de flotas, pago de combustible y entretenimiento, los fabricantes de automóviles han adoptado MQTT como un estándar clave para los vehículos conectados. A diferencia del protocolo HTTP, MQTT permite mantener sesiones persistentes incluso cuando el coche atraviesa zonas sin cobertura o cambia de torre de telefonía móvil. Además, admite comunicaciones bidireccionales, lo que permite al vehículo y a la aplicación en la nube intercambiar datos de forma simultánea, sin necesidad de esperar a que el otro responda.
HTTP y MQTT son dos protocolos de red que se utilizan para transmitir datos a través de Internet. Veamos sus diferencias.
Muchas características de MQTT lo convierten en el protocolo ideal para la mensajería entre dispositivos IoT (las «cosas» de IoT) y sistemas back-end. Aquí nos centraremos en cuatro características:
MQTT admite el protocolo de control de transmisión/protocolo de Internet (TCP/IP) como protocolo de transporte subyacente. Este protocolo de red ampliamente utilizado garantiza que los mensajes se envíen de forma fiable entre los clientes y los intermediarios.
Hay varias razones por las que TCP/IP se considera fiable y eficaz:
Aunque es el más común, TCP/IP no es la única opción para el transporte de mensajes MQTT. El protocolo MQTT también funciona en UDP (User Datagram Protocol) y WebSockets.
Nos enorgullece ofrecerle los siguientes recursos gratuitos para ayudarle a explorar cómo NGINX puede garantizar la seguridad, equilibrar la carga y proporcionar alta disponibilidad en sistemas IoT basados en MQTT.