MQTT (Message Queuing Telemetry Transport) — это облегченный протокол обмена сообщениями, основанный на методе публикации/подписки в соответствии со стандартом ISO. MQTT обычно использует TCP/IP (протокол управления передачей/Интернет-протокол) в качестве транспорта, но также можно использовать и другие двунаправленные транспортные средства. MQTT обычно используется для связи между устройствами и приложениями, такими как Интернет вещей и умные дома. В области встраиваемых систем MQTT уже играет незаменимую роль, поскольку большинству встраиваемых устройств для обмена данными требуется именно такой протокол.
Скорочтение:
Основные возможности протокола MQTT
01 Распространение информации «один ко многим»
02 Различные базовые протоколы
06 Производительность и эффективность
Каковы преимущества протокола MQTT для Интернета вещей?
03 Двусторонний обмен сообщениями
04 Масштабный обмен сообщениями
(1) Открытый протокол сообщений, простой и легкий в реализации.
(2) Модель публикации и подписки, публикация сообщений «один ко многим».
(3) Основанное на сетевом соединении TCP/IP, оно обеспечивает упорядоченное двустороннее соединение без потерь.
(4) 1-байтовый фиксированный заголовок и 2-байтовое контрольное сообщение минимизируют накладные расходы на передачу и обмен протоколами, эффективно уменьшая сетевой трафик.
(5) Качество обслуживания сообщений обеспечивает гарантию надежной передачи.
01 Распространение информации «один ко многим»
Прежде всего, это протокол, основанный на подписке и публикации, поэтому он может публиковать сообщения один ко многим. Существует множество сценариев применения этой функции. Ограниченное вещание позволяет серверу гибко управлять устройством, которым он хочет управлять, и сервер может Предоставление нескольких тем, на которые можно подписаться, чрезвычайно важно.
Потому что для сервера получение и обработка данных является основной задачей, но по мере увеличения количества устройств и функциональных линий устройств логика обработки сервера будет расти в геометрической прогрессии. Одни и те же полученные данные могут представлять собой совершенно разную информацию, загруженную совершенно разными типами устройств. Поэтому, когда можно предоставить несколько тем подписки и тем публикации, это логическое различие можно различить, что приносит пользу разработчикам. Это дает большое удобство.
Вторая особенность MQTT на самом деле заключается в том, что он основан на TCP/IP. Ему суждено стать протоколом верхнего уровня. Большинство людей, с которыми мы сейчас общаемся, на самом деле разработаны на основе протокола TCP, но на самом деле он есть версия, основанная на UDP. Она называется MQTT-SN, но все знают, что TCP ориентирован на соединение, а UDP не ориентирован на соединение, поэтому в зависимости от различных типов базовых протоколов характеристики, отображаемые MQTT, определенно различаются.
Для широко используемого протокола MQTT имеется очень важная функция обеспечения надежности сообщений — QoS (качество обслуживания).QoS можно разделить на три уровня: QoS 0, QoS 1 и QoS 2.
QoS 0 фактически эквивалентен MQTT без дополнительной защиты информации. Поскольку он основан на протоколе TCP, надежность его сообщений полностью зависит от протокола TCP. QoS 1 означает, что он обещает отправить его получателю хотя бы один раз.Это защита информации на уровне MQTT, а не только на уровне протокола TCP. Наконец, QoS 2 гарантирует, что сообщение будет доставлено пункту назначения только один раз.
Поскольку для QoS 1 сообщение может быть отправлено несколько раз из-за отсутствия обратной связи, получатель также может получить сообщение несколько раз. По этой причине сообщение, передаваемое QoS 2, имеет уникальный идентификатор, а сообщение с уникальным идентификатором Идентификатор сообщения сохраняется дважды: сначала от отправителя, а затем от получателя. Уровень QoS 2 имеет самые высокие издержки в сети, поскольку между отправителем и получателем требуются два потока.
MQTT имеет две основные версии: v3 и v5. Принципы этих двух версий в основном одинаковы, но между ними есть некоторые ключевые различия. Различия между ними будут представлены ниже.
Темы — это основная концепция MQTT, которая используется для определения содержания и целей сообщений. В MQTT v3 тема — это простая строка, структурированная как серия слов, разделенных косой чертой. Например, тема MQTT v3 может иметь вид датчики/температура/комната1, где датчики – это тема верхнего уровня, температура — это подтема, а комната1 — конкретное устройство в подтеме.
Однако в MQTT v5 структура тем была расширена и добавлены некоторые более продвинутые возможности. В частности, в MQTT v5 представлена новая концепция, называемая псевдонимами тем, которая позволяет клиентам сопоставлять строки тем с предопределенными идентификаторами тем, тем самым уменьшая сетевой трафик и размер сообщений. Это позволяет клиентам отправлять только идентификатор темы при отправке сообщения, вместо того, чтобы каждый раз отправлять полную строку темы. Это полезно для устройств Интернета вещей и сред с ограниченной пропускной способностью сети.
В MQTT v5 представлен новый тип подписки, называемый общей подпиской. Как показано на рисунке ниже, общие подписки позволяют нескольким клиентам совместно использовать подписку и распространять ее в соответствии с определенными правилами. Этот тип подписки полезен для подписки на темы с высокой нагрузкой, поскольку он балансирует запросы на подписку и снижает нагрузку на отдельных клиентов.
Кроме того, в MQTT v5 добавлена концепция параметров подписки.Можно указать параметры подписки, такие как уровень QoS, сохранение при публикации, сохранение обработки, жизненный цикл сообщения и т. д., чтобы более точно контролировать поведение подписки.
Сообщения о намерениях — это возможность MQTT корректно отправлять завещания третьим лицам для устройств, которые могут столкнуться с неожиданными отключениями.
Will Properties — это новое поле в MQTT v5. Различные типы сообщений имеют разные свойства. Например, сообщения CONNECT имеют такие атрибуты, как максимальная длина сообщения и интервал окончания сеанса, а сообщения SUBSCRIBE имеют такие атрибуты, как идентификаторы подписки. Более того, по сравнению с MQTT v3, содержание волевых сообщений стало более гибким и может содержать любую тему и любое содержание сообщения.
MQTT v5 поддерживает более подробный механизм обработки ошибок, который позволяет обнаруживать и решать проблемы с помощью кодов ошибок и их причин. В то же время в MQTT v5 также представлено новое управляющее сообщение — сообщение Disconnect, которое может помочь клиентам и серверам лучше обрабатывать ошибочные ситуации.
В MQTT v5 представлены некоторые новые механизмы управления потоком на основе версии v3, чтобы лучше контролировать передачу и обработку сообщений и избежать перегрузки сети и высокой нагрузки, вызванной слишком высокой скоростью передачи сообщений.
Максимальный размер пакета: MQTT v5 позволяет клиенту и серверу согласовывать максимальный размер пакета во время рукопожатия. Как показано на рисунке ниже, этот максимальный размер сообщения можно использовать для управления максимальным размером сообщения, передаваемого между клиентом и сервером, чтобы предотвратить перегрузку сети и высокую нагрузку из-за передачи слишком больших сообщений.
Очередь сообщений. Когда сообщение, отправленное сервером, превышает скорость обработки клиента, сервер может сохранить сообщение в очереди сообщений и ждать, пока клиент его обработает. MQTT v5 определяет размер очереди и время ожидания очереди сообщений для управления размером и жизненным циклом очереди сообщений.
06Производительность и эффективность
По сравнению с MQTT v3, MQTT v5 лучше справляется с крупномасштабной передачей данных и повышает эффективность и производительность связи. Например, MQTT v5 поддерживает такие функции, как пакетная публикация (Batch Publish) и предварительная выборка (Message Prefetch), которые могут значительно снизить накладные расходы на связь MQTT.
Короче говоря, MQTT v5 имеет больше новых функций и безопасности, чем MQTT v3. Однако следует отметить, что MQTT v5 добавляет много новых функций и концепций по сравнению с MQTT v3. Поэтому при использовании MQTT v5 вам необходимо иметь глубокое понимание новых функций протокола MQTT, чтобы вы могли лучше использовать этот новый протокол.Создавайте надежные приложения.
Каковы преимущества протокола MQTT для Интернета вещей?
Начать работу MQTT можно быстро и легко: доступны миллионы готовых клиентских приложений и почти столько же брокеров.
Многие устройства Интернета вещей используют радиосоединения для передачи и сбора данных, а это означает, что соединения не всегда надежны. MQTT может разрешить хранить сообщения в брокере до тех пор, пока устройство не будет готово к их приему. Благодаря QoS (качество обслуживания) MQTT может ставить сообщения в очередь, гарантируя, что они дойдут до места назначения и, при необходимости, гарантируя, что они прибудут только один раз.
03 Двусторонний обмен сообщениями
Возможно, точнее будет сказать, что MQTT является всенаправленным. Любое устройство, вещь или приложение может публиковать или подписываться на любую тему, обрабатываемую агентом. Это означает, что нет никаких ограничений на то, что вы можете говорить или слушать в Интернете.
04 Масштабный обмен сообщениями
Транслировать сообщение на миллион устройств так же просто, как отправить на сотню устройств, а чтобы вещь была услышана всеми в сети, достаточно опубликовать ее в теме, на которую подписаны все устройства.
В конечном счете, у Интернета вещей (IoT) есть одна задача: передача данных между устройствами в сети. Хотя эти сети могут располагаться в любой точке мира, каждая сеть сталкивается со многими ситуациями, которые могут привести к сбою передачи данных.MQTT имеет бесчисленное множество встроенных функций, которые помогают облегчить некоторые из этих проблем, тем самым заставляя пользователей меньше беспокоиться.