MQTT
![]() ![]() | |
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 ![]() |
| |
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]
Funcionalitat
Propietats 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).
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3c/MQTT_connect_package.svg/220px-MQTT_connect_package.svg.png)
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
Benchmarking 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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/82/MQTT_protocol_example_without_QoS.svg/220px-MQTT_protocol_example_without_QoS.svg.png)
Existeixen molts brokers MQTT disponibles, varien en la seua funcionalitat, alguns d'ells ofereixen funcionalitats addicionals.
Els principals brokers de codi obert són:
[6]
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
Nombroses 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
En 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.
[8]
Referències
- ↑ MQTT 3.1.1 specification
- ↑ [enllaç sense format] 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.