Cami Can Calders, 8 2º-2ª | 08173 Sant Cugat del Valles info@bmotes.com 932504996

WhatsBee blog

Introducción a MQTT

Revision for “Introducción a MQTT” created on 2 02UTC marzo, 2016 @ 23:12:32

Título
Introducción a MQTT
Contenido
Basado en <a href="https://dzone.com/refcardz/getting-started-with-mqtt">https://dzone.com/refcardz/getting-started-with-mqtt</a> <h2>Qué es MQTT</h2> MQTT es un protocolo de mensajería de tipo publicación/suscripción, desarrolado por IBM y estandarizado por OASIS. <ul> <li>Es ligero, simple, abierto y muy fácil de implementar.</li> <li>Es una buena opción para sistemas M2M (Machine to Machine) y del Internet de las Cosas debido a que su sobrecarga en el protocolo es mínima y corre en prácticamente cualquier sistema embebido.</li> <li>MQTT utiliza características del transporte TCP, por lo que el requisito mínimo para el uso de MQTT es el uso de TCP.</li> </ul> <h2>Casos de Uso</h2> MQTT es un protocolo muy adecuado en los casos en los que la entrega de mensajes debe de ser confiable, pero no se disponen de conexiones de red fiables. Sus principales aplicaciones son: <ul> <li>Telemetría</li> <li>Casa inteligente</li> <li>Monitorización de Energía</li> <li>Aplicaciones de Chat</li> <li>Servicios de notificación</li> <li>Comunicación Publish/Subscribe</li> </ul> En esta forma de comunicación se desacoplan los clientes que publican (<strong>Publisher</strong>) de los que consumen los datos (<strong>Suscribers</strong>). Eso significa que los clientes no se conocen entre ellos unos publican la información y otros simplemente la consumen, simplemente todos tienen que conocer al <strong>message broker</strong>. El desacoplamiento se produce en tres dimensiones: <ul> <li><strong>En el espacio:</strong> El publicador y el suscriptor no tienen porqué conocerse.</li> <li><strong>En el tiempo:</strong> El publicador y el suscriptor no tienen porqué estar conectados en el mismo momento.</li> <li><strong>En la sincronización:</strong> las operaciones en cualquiera de los dos componentes no quedan interrumpidas mientras se publican o se reciben mensajes. Tipos de mensajes MQTT</li> </ul> MQTT tiene 14 tipos de mensajes, normalmente un usuario sólo usa los mensajes de <strong>CONNECT, PUBLISH, SUBSCRIBE Y UNSUBSCRIBE.</strong> Si quereis conocer los tipos de mensajes podéis consultarlos en :<a href="https://dzone.com/refcardz/getting-started-with-mqtt"> https://dzone.com/refcardz/getting-started-with-mqtt</a> <h2>Tópicos MQTT</h2> Un tópico es una cadena UTF-8 que usa el Broker para filtrar mensajes para cada cliente conectado. MQTT soporta dos tipos de Comodines (Wilcards) (+ y #): <ul> <li>Comodín de nivel simple (+): El comodín reemplaza exactamente un nivel del topic. Puede ser utilizado varias veces en la suscripción.</li> <li>Comodin Multinivel (#): reemplaza cualquier número de niveles del topic. Solo se puede utilizar una vez al final de la suscripción.</li> </ul> Ejemplos de Topics MQTT Válidos: <ul> <li>casa/prueba/topic</li> <li>casa/+/topic</li> <li>casa/#</li> <li>casa/+/+</li> <li>+/#</li> <li>#</li> <img class="alignnone wp-image-7623" src="http://blog.whatsbee.net/wp-content/uploads/2016/03/publish-suscribe-2-300x200.png" alt="publish-suscribe" width="609" height="406" /> </ul> <h2>Calidad del Servicio</h2> MQTT soporta tres Calidades del Servicio (QoS). Cada mensaje publicado se envía con uno de estos niveles de Quality of Service (QoS). Estos niveles representan las diferentes garantías en la entrega del mensaje. <ul> <li><strong>QOS=0</strong>: Al menos un envío: El <strong>Sender</strong> hace su mejor esfuerzo para enviar el mensaje y que llegue al destino, confía en la fiabilidad del TCP. No se hacen retransmisiones.</li> <li><strong>QOS=1</strong>; Al menos una entrega: El <strong>Receiver</strong> recibe el mensaje por lo menos una vez. Si el <strong>receiver</strong> no confirma la recepción del mensaje o se pierde en el camino el <strong>Sender</strong> reenvía el mensaje hasta que recibe por lo menos una confirmación. Pueden duplicarse mensajes.</li> <li><strong>QOS=2</strong>: Exactamente una entrega: El protocolo se asegura de que el mensaje llega exactamente una vez al receptor. Eso incrementa la sobrecarga en la comunicación pero es la mejor opción cuando la duplicación de un mensaje no es aceptable.</li> </ul> <h2>Otros conceptos</h2> <ul> <li>Un cliente puede establecer un mensaje Last Will and Testament (LWT) en el momento en el que conecta conecta con el <strong>Broker</strong> MQTT. Si el cliente no desconecta correctamente el <strong>Broker</strong> envía el mensaje LWT.</li> <li>Cada mensaje MQTT puede ser enviado como un mensaje con retención (<strong>retained</strong>), en este caso cada nuevo cliente que conecta a un tópic recibirá el último mensaje retenido de ese tópico. Cuando un cliente conecta con el <strong>Broker</strong> puede solicitar que la sesión sea persistente, en ese caso el <strong>Broker</strong> almacena todas las suscripciones del cliente, todos los mensajes QoS 1 y 2 no procesados o perdidos por el cliente</li> <li>Un mensaje MQTT <strong>CONNECT</strong> contiene un valor keepAlive en segundos donde el cliente establece el máximo tiempo de espera entre intercambio de mensajes</li> </ul> <h2>Implementaciones MQTT</h2> Existen implementaciones de MQTT para virtualmente cualquier plataforma. <h2>Escalado MQTT</h2> En una Arquitectura basada en Broker es fundamental evitar el SPOF (punto único de fallo). En el contexto MQTT hay 2 estrategias principales: <ul> <li><strong>Bridging:</strong> hace forward de mensajes a otro bróker MQTT. Es la solución de HiveMQ, Mosquitto, IBM MQ</li> <li><strong>Clustering:</strong> soportando añadido dinámico de nodos al cluster. Lo usa ActiveMQ, HiveMQ o RabbitMQ.</li> </ul> Ya sabemos lo importante que es la seguridad, y más en escenarios IoT en el que comunican objetos entre sí. MQTT confía en tecnologías estándares para esto: <ul> <ul> <li>Autenticación usuario/Password</li> <li>Seguridad SSL/TLS</li> </ul> </ul> <h2>Nuevas características de MQTT 3.1.1</h2> MQTT 3.1.1 es la versión más reciente de MQTT (octubre de 2014). Esta versión es compatible hacia atrás con la 3.1 aunque añade alguna característica interesante como clientes MQTT anónimos.
Extracto


OldNewDate CreatedAuthorActions
2 02UTC marzo, 2016 @ 23:12:32 carlos
2 02UTC marzo, 2016 @ 23:12:27 [Autosave] carlos
2 02UTC marzo, 2016 @ 23:09:07 carlos
2 02UTC marzo, 2016 @ 22:29:11 carlos
2 02UTC marzo, 2016 @ 22:21:39 carlos
2 02UTC marzo, 2016 @ 22:15:44 carlos
2 02UTC marzo, 2016 @ 22:10:42 carlos