Сравнение реализаций MQTT - Википедия - Comparison of MQTT implementations
MQTT (MQ Telemetry Transport или же Транспорт телеметрии очереди сообщений) является Стандарт ISO (ISO / IEC PRF 20922)[1] опубликовать-подписаться протокол обмена сообщениями. Он работает поверх Протокол TCP / IP. Он разработан для подключений к удаленным местам, где требуется «небольшой объем кода» или ограничена пропускная способность сети. В шаблон обмена сообщениями публикация-подписка требует брокер сообщений.
Все категории сравнения используют стабильную версию каждой реализации, перечисленной в разделе обзора. Сравнение ограничивается функциями, относящимися к протоколу MQTT.
Обзор
В следующей таблице перечислены библиотеки и реализации MQTT, а также общая информация о каждом из них.
Выполнение | Разработан | Открытый исходный код | Лицензия на программное обеспечение | Владелец авторских прав | Язык программирования | Тип | Последний стабильный выпуск, дата выпуска | Источник |
---|---|---|---|---|---|---|---|---|
Adafruit IO | Адафрут | да | Лицензия MIT | Адафрут | Рубин, Node.js, Python, Идти[2] | Клиент | 2.0.0,[3] ? | нас |
EMQ X[4] | EMQ | да | Лицензия Apache версии 2.0 | EMQ Enterprise, Inc. | Erlang[5] | Маклер | V3.0,[6] 2019-04-03 | Китай |
флеспи[7] | Гуртам | Нет | Коммерческая лицензия | Гуртам | C | Маклер | 2018-04-05 | Беларусь |
GridServer | Система GRID | да | MPL 2.0 | GRID System S.A.S | Паскаль, Delphi | Маклер | 2019-09-15 | Франция |
Клиент HiveMQ MQTT[8] | HiveMQ | да | Лицензия Apache версии 2.0 | HiveMQ | Ява | Клиент | 1.2.1,[9] 2020-08-09 | Германия |
HiveMQ Community Edition[10] | HiveMQ | да | Лицензия Apache версии 2.0 | HiveMQ | Ява | Маклер | 2020.6,[11] 2020-11-17 | Германия |
HiveMQ[12] | HiveMQ | Нет | Коммерческая лицензия | HiveMQ | Ява | Маклер | 4.4.4,[13] 2020-12-15 | Германия |
Шлюз сообщений IBM WIoTP[14] | IBM | Нет | Коммерческая лицензия | IBM | C | Маклер | 5.0.0.1 2019-02-29 | |
JoramMQ[15] | ScalAgent D.T. | Нет, на основе OW2 / Joram 5.16, брокера с открытым исходным кодом (LGPL) | Коммерческая лицензия | ScalAgent D.T. | Ява | Маклер | 1.13 2019-04-29 | Франция |
KMQTT[16] | Давиде Пьянка | да | Лицензия MIT | Давиде Пьянка | Котлин | Маклер | 0.2.1,[17] 2020-08-15 | Италия |
M2Mqtt[18] | Затмение | да | Общественная лицензия Eclipse 1.0 | Затмение | C # | Клиент | 4.3.0.0,[19] 2017-05-20 | Канада |
Головка машины[20] | ClojureWerkz[21] | да | Лицензия Creative Commons Attribution 3.0 без переноса | Александр Петров, Михаил Клишин, ClojureWerkz Team | Clojure | Клиент | 1.0.0,[20] 2017-03-05 | |
мокет[22] | Андреа Сельва | да | Лицензия Apache версии 2.0 | Андреа Сельва | Ява | Маклер | 0.12.1,[23] 2019-03-03 | Италия |
Москитто[24] | Затмение | да | Общественная лицензия Eclipse 2.0, Лицензия распространения Eclipse 1.0 (BSD) | Затмение | C | Клиент и брокер | 2.0.2,[25] 2020-12-10 | Великобритания |
MQTT-C[26] | Лиам Биндл | да | Лицензия MIT | Лиам Биндл | C | Клиент | 1.1.1,[27] 2020-02-05 | Канада |
mqttools[28] | Эрик Моквист | да | Лицензия MIT | Эрик Моквист | Python | Клиент и брокер | 0.34.0, 2020-01-20 | Швеция |
net-mqtt[29] | Дастин Саллингс | да | BSD 3-пункт | Дастин Саллингс | Haskell | Клиент | 0.6.0.0, 2019-10-12 | нас |
Paho MQTT[30] | Затмение | да | Общественная лицензия Eclipse 1.0, Лицензия распространения Eclipse 1.0 (BSD)[31] | Затмение | C, C ++, C #, Идти, Ява, JavaScript, Python, Ржавчина[32] | Клиент | 1.4.0 (Фотон),[33] 2018-06-27 | Великобритания |
PubSub +[34] | Утешение | Нет | Коммерческая лицензия, бесплатная версия | Утешение | C, C ++ | Маклер | 8.13 2018-09-28 | Канада |
Thingstream[35] | Thingstream | Нет | Коммерческая лицензия | Thingstream | C, C ++, Ява, JavaScript, Python, Идти | Клиент и брокер | 3.3.0 2019-03-14[36] | Великобритания |
VerneMQ[37] | VerneMQ / Erlio | да | Лицензия Apache версии 2.0 | VerneMQ / Erlio | Erlang / OTP | Маклер | 1.9.1 2019-08-12 | Швейцария |
wolfMQTT[38] | wolfSSL[39] | да | Стандартная общественная лицензия GNU, версия 2, Коммерческая лицензия[38] | wolfSSL | C | Клиент | 1.7[40] 2020-08-21 | нас |
eMQTT5[41] | Кирилл Руссо | да | Лицензия MIT | Кирилл Руссо | C ++ | Клиент | 1.0, 2020-03-31 | Франция |
Bevywise MQTTБрокер[42] | Bevywise Networks | Нет | Коммерческая лицензия | Bevywise Networks | C, Python | Маклер | Версия 1.1, 20 октября 2018 г. | Индия |
Привязка OpenHAB MQTT[43] | OpenHAB | да | Общественная лицензия Eclipse | OpenHAB | Ява | Клиент | 2.5.4, 2020-04-21 | Германия |
Водный поток[44] | SimpleMatter[45] | Нет | Коммерческая лицензия | SimpleMatter Srl | Котлин | Маклер | 1.00.03 | Италия |
Более полный список реализаций MQTT можно найти на GitHub.
Поддержка протокола
Есть несколько версий MQTT протокол в настоящее время стандартизирован. Ниже приведен список, содержащий самые свежие версии MQTT протокол с организацией, которая их стандартизировала.
- MQTT-SN v1.2, стандартизированный IBM.[46]
- MQTT v3.1, стандартизированный Евротек и IBM.[47]
- MQTT v3.1.1, стандартизированный ОАЗИС.[48] [49]
- MQTT v5.0, стандартизированный ОАЗИС.[50]
В следующей таблице перечислены версии MQTT, поддерживаемые каждой реализацией, а также указана их поддержка для SSL / TLS и TCP. Безопасность обеспечивается SSL / TLS может быть желательным в зависимости от типа трафика, передаваемого между устройствами, поскольку MQTT передает сообщения в ясном.[51]
Выполнение | MQTT-SN v1.2 | MQTT 3.1 | MQTT 3.1.1 | MQTT 5.0 | SSL / TLS | TCP | WS / WSS |
---|---|---|---|---|---|---|---|
EMQ | да | да | да | да | да | да | да |
флеспи | да | да | да[52] | да | да | ||
HiveMQ | Да (только для брокера) | да | да [53] | да | да | да | |
Шлюз сообщений IBM WIoTP | да | да | да | да | да | да | |
JoramMQ | да | да | да | да | да | да | да |
KMQTT | да | да | да | да | |||
M2Mqtt | да | да | да | да | |||
Головка машины | |||||||
мокет | да | да | да[54] | да | |||
Москитто | да | да | да | Поддерживает SSL / TLS на основе сертификатов и предварительных общих ключей, общая поддержка SSL / TLS через мосты[55] | да | да | |
MQTT-C | да | да | да | да | |||
mqttools | да | да | да | ||||
net-mqtt | да | да | да | да | да | да | |
Paho MQTT[30] | да [56] | да | да | Да (только в клиентской библиотеке C и Java) [57] | да | да | да |
Утешение PubSub + | да | да | да | да | |||
Thingstream | да | да | да | да | |||
VerneMQ | да | да | да | да | да | да | |
wolfMQTT | да | да | да | да | да | ||
eMQTT5 | да | да | да | ||||
Bevywise Networks | да | да | да | да | да | да | |
Водный поток | да | да | да | да |
Предлагаемые уровни качества обслуживания (QoS)
От MQTT страница, QoS (качество обслуживания) описывается как,
Качество обслуживания относится к механизмам приоритизации трафика и резервирования ресурсов, а не к достигнутому качеству обслуживания. Качество обслуживания - это способность предоставлять разный приоритет различным приложениям, пользователям или потокам данных или гарантировать определенный уровень производительности для потока данных.
Описание каждого QoS уровень находится ниже.[58]
- Максимум один раз доставка (выстрелил и забыл)
- Хотя бы один раз доставка (подтвержденная доставка)
- Ровно после доставки (гарантированная доставка)
В следующей таблице перечислены поддерживаемые каждой реализацией уровни QoS.
Выполнение | 0 | 1 | 2 |
---|---|---|---|
Adafruit IO | да | да | Нет[59] |
EMQ[60] | да | да | да |
флеспи[52] | да | да | да |
HiveMQ[61] | да | да | да |
Шлюз сообщений IBM WIoTP | да | да | да |
JoramMQ | да | да | да |
KMQTT | да | да | да |
M2Mqtt[18] | да | да | да |
мокет[62] | да | да | да |
Москитто[63] | да | да | да |
MQTT-C | да | да | да |
mqttools | да | Нет | Нет |
net-mqtt | да | да | да |
Paho MQTT | да | да | да |
Утешение PubSub + | да | да | Нет[64] |
Thingstream | да | да | да |
VerneMQ | да | да | да |
wolfMQTT[38] | да | да | да |
eMQTT5 | да | да | да |
Bevywise MQTTБрокер | да | да | да |
Водный поток | да | да | да |
Проблемы переносимости
Проблемы переносимости в этом разделе относятся к техническим деталям, которые могут быть решающими факторами при выборе реализации для использования. В общем, эту таблицу следует использовать тем, кто лучше знает устройство, которое они будут использовать.
Выполнение | Требования к платформе | Сетевые требования | Безопасность потоков | Возможность кросс-компиляции | Оголенный метал |
---|---|---|---|---|---|
Adafruit IO | Adafruit Feather Huzzah, ESP8266, Raspberry Pi, Arduino, любая платформа, поддерживающая Python, Рубин, или же Node.js | Зависит от платформы | |||
EMQ | Linux, Unix, MacOS, Windows, Raspberry Pi[65] | да | да | да | |
флеспи | |||||
HiveMQ | JVM, Linux, MacOS, Windows, Raspberry Pi | да | да | да | |
KMQTT | JVM, Linux, Windows, Raspberry Pi | да | да | ||
M2Mqtt | Любая платформа .NET (.NET Framework, .NET Compact Framework, .NET Micro Framework ), WinRT | ||||
Головка машины | Leiningen 2[66] | ||||
комар | C90, Linux, Unix, MacOS, Windows, Raspberry Pi | да | да | ||
MQTT-C | ANSI C (C89 ) Независимость от платформы (используется в голом металле, Linux, MacOS, и Windows Приложения) | Обратные вызовы сетевого ввода-вывода | Да. Дополнительно поддерживает однопоточные приложения.[67] | да | да |
net-mqtt | GHC | да | да | да | |
Paho MQTT | ANSI C (за C клиент), C ++ 11 (за C ++ клиент), JVM или же Android (за Ява клиент) | За C, C ++ клиенты | За C, C ++ клиенты | ||
wolfMQTT | C89 | Обратные вызовы сетевого ввода-вывода | да | да | да |
eMQTT5 | Linux, Unix, MacOS, Windows, ESP32, STM32 (с lwIP и MBedTLS ) C ++ 11 | Реализация сокета BSD | да | да | да |
Bevywise MQTTБрокер | Linux, Unix, MacOS, Windows, Raspberry Pi | да |
Основные требования
В следующей таблице показаны различные требования, которые могут быть полезны при принятии решения о том, какую реализацию использовать для устройства.
Рекомендации
- ^ «ISO / IEC 20922: 2016 Информационные технологии - Телеметрия очереди сообщений (MQTT) v3.1.1». iso.org. Международная организация по стандартизации. 15 июня 2016 г.
- ^ "Обзор | Добро пожаловать в Adafriut IO | Adafruit Learning System". learn.adafruit.com.
- ^ «Документация Adafruit IO REST API». io.adafruit.com.
- ^ "EMQ". emqx.io.
- ^ "EMQ X- Erlang MQTT Broker - EMQ X - Документация по Erlang MQTT Broker 3.0". emqx.io. Получено 2018-09-30.
- ^ «Журнал изменений и примечания к выпуску EMQ X». emqx.io.
- ^ "брокер flespi MQTT". flespi.com.
- ^ "Клиент HiveMQ MQTT". hivemq.com.
- ^ «Выпуск HiveMQ MQTT Client 1.2.1». hivemq.com.
- ^ "HiveMQ Community Edition". hivemq.com.
- ^ «HiveMQ CE 2020.6». hivemq.com.
- ^ "HiveMQ". hivemq.com.
- ^ «Выпущен HiveMQ 4.4.4». hivemq.com.
- ^ «Шлюз сообщений WIoTP». ibm.com.
- ^ "JoramMQ". jorammq.com.
- ^ Пьянка, Давиде (2020-07-05), davidepianca98 / KMQTT, получено 2020-07-06
- ^ «Выпуск 0.2.0 · davidepianca98 / KMQTT». GitHub. Получено 2020-07-06.
- ^ а б c "Eclipse Paho M2Mqtt". eclipse.org.
- ^ "Релизы M2MQTT". github.com.
- ^ а б "Машинная голова". clojuremqtt.info.
- ^ "ClojureWerks". clojurewerz.org.
- ^ "мокет". github.com.
- ^ "мокетные релизы". github.com.
- ^ "Москитто". mosquitto.org.
- ^ "Mosquitto ChangeLog.txt". 10 декабря 2020 г.. Получено 16 декабря 2020.
- ^ «MQTT-C». liambindle.ca/MQTT-C.
- ^ "Релизы MQTT-C". github.com.
- ^ "mqttools". github.com.
- ^ "net-mqtt: реализация протокола MQTT". Взлом. Получено 2019-09-16.
- ^ а б "Пахо". eclipse.org. Получено 2020-12-16.
- ^ «Лицензия на распространение Eclipse - версия 1.0». eclipse.org.
- ^ «Загрузки Eclipse Paho - Сравнение клиентов MQTT».
- ^ «Последние выпуски». eclipse.org/projects.
- ^ "Solace PubSub +". solace.com.
- ^ "Дома". Thingstream. Получено 2019-01-31.
- ^ «DOCS - Примечания к выпуску». sites.google.com. Получено 2019-06-07.
- ^ "VerneMQ MQTT Брокер". vernemq.com.
- ^ а б c d "Клиентская библиотека wolfMQTT | Встроенные коммуникационные продукты wolfSSL". wolfSSL. Получено 2020-12-16.
- ^ "wolfssl.com".
- ^ "Журнал изменений wolfMQTT | Документация встроенной библиотеки wolfSSL SSL / TLS". wolfSSL. Получено 2020-12-16.
- ^ «Клиентская библиотека eMQTT v5.0». github.com.
- ^ «Брокер Bevywise MQTT». bevywise.com.
- ^ «Клиент MQTT». openhab.org.
- ^ «Водный поток». waterstream.io.
- ^ "SimpleMatter". simplematter.io.
- ^ Энди Стэнфорд-Кларк, Хонг Линь Чыонг (14 ноября 2013 г.). «Спецификация протокола MQTT для сенсорных сетей (MQTT-SN), версия 1.2» (PDF). IBM.CS1 maint: использует параметр авторов (связь)
- ^ «Спецификация протокола MQTT V3.1». public.dhe.ibm.com. 2010. Получено 2017-12-13.
- ^ Отредактировано Эндрю Бэнксом и Рахулом Гуптой (29 октября 2014 г.). «MQTT версии 3.1.1». ОАЗИС.CS1 maint: использует параметр авторов (связь)
- ^ Отредактировано Эндрю Бэнксом и Рахулом Гуптой (10 декабря 2015 г.). «Версия MQTT 3.1.1 плюс исправление 01». ОАЗИС.CS1 maint: дополнительный текст: список авторов (связь)
- ^ Под редакцией Эндрю Бэнкса, Эда Бриггса, Кена Боргендейла и Рахула Гупты (25 декабря 2017 г.). «MQTT версии 5.0». ОАЗИС.CS1 maint: несколько имен: список авторов (связь) CS1 maint: дополнительный текст: список авторов (связь)
- ^ «FAQ - Часто задаваемые вопросы | MQTT». mqtt.org. Получено 2018-01-30.
- ^ а б «Контрольный список соответствия MQTT 5.0». flespi.com.
- ^ «HiveMQ 4.1». hivemq.com.
- ^ «Документация Moquette - Конфигурация SSL».
- ^ "mosquitto.conf (5)".
- ^ «Eclipse Paho - Прозрачный шлюз MQTT-SN». Получено 2020-12-16.
- ^ "Eclipse Paho 1.4.0 (Фотон)".
- ^ «Центр знаний IBM». www.ibm.com. Получено 2018-01-30.
- ^ «MQTT API». adafruit.com.
- ^ «EMQ X - Erlang MQTT Broker - EMQ 3.0 - документация». emqx.io. Получено 2018-09-30.
- ^ https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels/
- ^ Сельва, Андреа (29.01.2018), moquette: облегченный брокер Java MQTT, получено 2018-02-01
- ^ "mosquitto.conf". mosquitto.org. Получено 2017-12-15.
- ^ «Документация по Утешению - Поддерживаемые уровни качества обслуживания».
- ^ а б c emqttd: EMQ - Брокер Erlang MQTT, emqtt, 30.09.2018, получено 2018-09-30
- ^ а б machine_head: клиент Clojure MQTT, ClojureWerkz, 29 ноября 2017 г., получено 2017-12-13,
Machine Head использует Leiningen 2. Убедитесь, что он установлен, а затем запустите тесты для поддерживаемых версий Clojure, используя ...
- ^ «Однопоточные приложения MQTT-C». liambindle.ca/MQTT-C/group__api.html#gae3d3aafc7588ed53a90c9f66fc620a6e.
- ^ emqx.io, фен в. "EMQ X- Загрузки". emqx.io. Получено 2018-09-30.
- ^ «Начало работы с MQTT и Clojure». clojuremqtt.info. Получено 2017-12-14.
- ^ "Загрузки | Москитто". mosquitto.org. Получено 2017-12-14.
- ^ «Утешение PubSub + Cloud». cloud.solace.com.
- ^ "Руководство пользователя wolfMQTT - 2.4 Создание на других системах". 2018-05-25. Получено 2020-12-16.