MQTT
MQTT[1] (Message Queuing Telemetry Transport) és un protocol de missatgeria publish-subscribe basat en el protocol TCP/IP. Inicialment desenvolupat per Andy Stanford-Clark (IBM) i Arlen Nipper (EuroTech), i després publicat com a codi obert. MQTT v3.1.1 és ara un estàndard d'OASIS, l'especificació d'aquest protocol és disponible en HTML i PDF.[2][3]
| Tipus | Protocol |
|---|---|
| Versió inicial | 1999 |
| Versió estable | 3.1 / 2013 |
| Llicència | estàndard ISO |
| Part de | Internet de les coses |
| Característiques tècniques | |
| Sistema operatiu | Multiplataforma |
| Equip | |
| Creador/s | Andy Stanford-Clark i Arlen Nipper de Cirrus Link |
| Més informació | |
| Lloc web | mqtt.org |
| Stack Exchange | Etiqueta |
|
| |
Funcionalitat
modificaPropietats de MQTT :
- Estàndard obert.
- Estructura senzilla (mínim nombre de bytes per cada missatge).
- Fiabilitat (existeix la funció QoS Quality of Service), que ens informa de l'estat de la comunicació.
- Simplicitat (protocol que està definit en 43 pàgines).
MQTT defineix un petit conjunt de missatges :[4]
| Tipus de missatge | Valor | Descripció |
|---|---|---|
| CONNECT | 1 | Petició del client per a connectar-se al servidor (vegeu Fig1) |
| CONNACK | 2 | Reconeixement de la connexió |
| PUBLISH | 3 | Edició missatge |
| PUBACK | 4 | Reconeixement de l'edició |
| PUBREC | 5 | Edició rebuda (part 1) |
| PUBREL | 6 | Edició alliberada (part 2) |
| PUBCOMP | 7 | Edició completa (part 3) |
| SUBSCRIBE | 8 | Petició de subscripció de client |
| SUBACK | 9 | Reconeixement de subscripció |
| UNSUBSCRIBE | 10 | Petició de desubscripció de client |
| UNSUBACK | 11 | Reconeixement de desubscripció |
| PINGREQ | 12 | Petició de PING |
| PINGRESP | 13 | Resposta de PING |
| DISCONNECT | 14 | Client deconnectant |
Comparativa de protocols MQTT versus HTTP
modificaBenchmarking de mida de trama:[5]
| Acció | Protocol HTTP | Protocol MQTT | Relació HTTP/MQTT |
|---|---|---|---|
| Rebre una unitat de dades (la mínima) | 320 bytes | 69 bytes | 4,6 |
| Enviar una unitat de dades (la mínima) | 320 bytes | 47 bytes | 6,8 |
| Rebre 100 unitats de dades (la mínima) | 12600 bytes | 2445 bytes | 5,1 |
| Enviar 100 unitats de dades (la mínima) | 14100 bytes | 2126 bytes | 6,6 |
Benchmarking de característiques :
| Característica | Protocol HTTP | Protocol MQTT |
|---|---|---|
| Model | Centrat a les dades | Centrat al document |
| Accions | GET, POST, DELETE
especificació complexa |
Pub/Sub/Unsub
especificació senzilla |
| Mida dels missatges | Missatges llargs | Missatges curts |
| Quality of service | No, cal implementar en
la capa d'aplicació |
3 nivells : el millor, almenys 1 cop
i exactament 1 cop |
| Distribució de dades | NO, només 1 a 1 | Sí, 1 a n |
Brokers MQTT
modificaExisteixen molts brokers MQTT disponibles, varien en la seua funcionalitat, alguns d'ells ofereixen funcionalitats addicionals.
Els principals brokers de codi obert són:
Un estudi comparatiu de les característiques d'aquests diferents brokers (ActiveMQ, Apollo, JoramMQ, Mosquitto i RabbitMQ) es troba disponible aquí Arxivat 2016-03-04 a Wayback Machine..
Biblioteques de clients
modificaNombroses biblioteques estan disponibles per programar clients MQTT, per a la majoria dels llenguatges (C, C++, Java, JavaScript, PHP, Python, etc.) i per a la majoria de les plataformes (Linux, Windows, iOS, Android, Arduino, etc.).[7]
El projecte Eclipse/Paho ofereix implementacions de codi obert dels protocols de missatgeria oberts i estàndards destinats a les aplicacions noves i emergents per a la comunicació M2M (màquina-a-màquina) i de l'Internet de les coses (IoT).
Aplicacions reals
modificaEn el món real, hi ha nombrosos projectes que utilitza el protocol MQTT :
- Facebook Messenger : Facebook ha utilitzat aspectes de MQTT en Facebook Messenger.
- L'ultima_versio del sistema de control de senyalització de l'IECC Scalable DeltaRail utilitza MQTT per les comunicacions entre les diferents parts del sistema i els components del sistema de senyalització.
- CloudMQTT és un servei de missatgeria que utilitza el protocol MQTT.
Referències
modifica- ↑ MQTT 3.1.1 specification
- ↑ http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.pdf
- ↑ «MQTT Essentials» (en anglès). HiveMQ, 20-09-2015.
- ↑ «Programming with Reason» (en anglès). http://programmingwithreason.com. Arxivat de l'original el 2017-07-07. [Consulta: 3 juliol 2017].
- ↑ «Internet of things» (en anglès). https://www.slideshare.net.+[Consulta: 6 juliol 2017].
- ↑ Podem trobar una llista dels brokers disponibles aquí.
- ↑ La llista de les biblioteques de clients disponibles és accessible des d'aquí.
- ↑ En un llibre titulat "Building Smarter Planet Solucions with MQTT and IBM WebSphere MQ Telemetry" IBM descriu diversos exemples d'aplicacions en el domini de la salut i de l'energia.