Что такое MQTT и как он работает?

Contents

Введение

Интернет вещей (IoT) изменил наш образ жизни и работы: все больше и больше наших повседневных устройств и приборов подключаются к Интернету и общаются друг с другом. Интернет вещей — от умных домашних помощников до портативных фитнес-трекеров — открывает захватывающую новую эру удобства, эффективности и знаний благодаря подключенным технологиям.

Но обеспечение надежной связи между всеми этими сетевыми устройствами сопряжено с огромными проблемами. Традиционные протоколы HTTP, используемые для веб-трафика, часто оказываются слишком тяжелыми для устройств Интернета вещей с ограниченными ресурсами. Более того, необходимость потоковой передачи данных в реальном времени означает, что мы не можем полагаться на периодический опрос клиента/сервера.

Здесь на помощь приходит MQTT. MQTT (Message Queuing Telemetry Transport) — это легкий протокол обмена сообщениями публикации/подписки, оптимизированный для межмашинного взаимодействия (M2M) в средах Интернета вещей. Его эффективная работа с низкой пропускной способностью делает его идеальным для подключения устройств с ограниченными возможностями или ненадежных соединений.

В этом подробном руководстве мы познакомим вас с миром MQTT и тем, как он обеспечивает эффективную связь в режиме реального времени для Интернета вещей. Мы рассмотрим:

  • Основные концепции MQTT
  • Как работает архитектура публикации/подписки
  • Роль брокера MQTT
  • Уровни качества обслуживания в MQTT
  • Сообщения протокола MQTT и структура темы
  • Основные преимущества использования MQTT для IoT
  • Реальные приложения, использующие MQTT
  • Будущее MQTT в новых технологиях
  • Часто задаваемые вопросы о MQTT

Итак, давайте углубимся и осветим эту преобразующую технологию!

Углубление в основы MQTT

MQTT означает транспорт телеметрии очереди сообщений. Это протокол с открытым исходным кодом, первоначально разработанный в 1999 году Энди Стэнфордом-Кларком из IBM и Арленом Ниппером из Arcom (ныне Eurotech).

MQTT предоставляет упрощенный метод обмена структурированными данными и управляющей информацией между устройствами с использованием шаблона обмена сообщениями «публикация/подписка» (pub/sub). Эти характеристики делают его идеальным для межмашинного взаимодействия в средах Интернета вещей.

Архитектура Publish-Subscribe

Шаблон обмена сообщениями «публикация/подписка» — это сердце MQTT. Он разделяет отправку и получение сообщений.

Издатели генерируют сообщения и публикуют их по определенным темам. Подписчики выражают интерес к различным темам и получают сообщения, опубликованные по этим темам.

Это обеспечивает высокомасштабируемое распределение сообщений «один ко многим» с минимальными издержками сети. Устройства публикуют обновления в теме, не ориентируясь на какого-либо конкретного получателя. Другие устройства подписываются на интересующие темы и беспрепятственно получают актуальные обновления.

Архитектура публикации-подписки MQTT

Роль брокера

что такое брокер mqtt

Доставка MQTT по публикации и подписке происходит через брокера MQTT.

Брокер отвечает за фильтрацию сообщений по темам и их распространение среди подписанных клиентов. Он действует как центральный узел, принимая опубликованные сообщения и соответствующим образом отправляя их.

Использование брокера устраняет необходимость прямых связей между каждым клиентом. Издатели просто отправляют сообщения брокеру. Абоненты подключаются к брокеру для получения сообщений. Это сохраняет топологию сети простой даже для большого количества клиентов.

Брокер также выполняет другие ключевые задачи, такие как аутентификация, разрешения и сохранение сообщений. Брокеры MQTT могут масштабироваться для обработки огромного количества одновременно подключенных устройств. Популярные варианты включают Mosquitto, HiveMQ и AWS IoT Core.

Качество обслуживания доставки сообщений

Качество обслуживания доставки сообщений

Поскольку устройства Интернета вещей часто используют ненадежные сети, такие как Wi-Fi или сотовая связь, в MQTT встроены функции, обеспечивающие надежную доставку сообщений. Клиенты могут указать уровень качества обслуживания (QoS) при публикации сообщений:

  • QoS 0 – нет гарантии доставки. Сообщение передается только один раз.
  • QoS 1 – сообщение доставляется хотя бы один раз. Возможно получение дубликатов.
  • QoS 2 – сообщение доставляется ровно один раз. Используется 4-ступенчатое рукопожатие.

Более высокие уровни обеспечивают большую уверенность в доставке за счет увеличения накладных расходов на обработку. Таким образом, клиенты могут выбрать оптимальный уровень QoS для каждого варианта использования. Такие настройки, как телеметрия, могут использовать QoS 0, тогда как для критических управляющих сообщений требуется QoS 2.

Это дает MQTT гибкость для эффективной работы в различных средах, от спутниковой сети до шумного цеха.

Ключевые компоненты архитектуры MQTT

Экосистема MQTT состоит из трех основных компонентов: издателей, подписчиков и брокера.

Издательство

Издатели — это MQTT-клиенты, которые отправляют сообщения брокеру. Они упаковывают полезные данные вместе с именем темы, которое классифицирует сообщение.

Например, издателем может быть датчик температуры, который периодически отправляет показания температуры в тему «дом/спальня/температура». Или издатель, основанный на событиях, например датчик движения, который отправляет оповещения в режиме реального времени всякий раз, когда обнаруживает движение.

Издатели устанавливают соединения с брокером и отправляют сообщения с помощью команд протокола MQTT, таких как CONNECT, PUBLISH и DISCONNECT.

Подписчики

Подписчики — это клиенты, которые подключаются к брокеру и подписываются на различные интересующие темы. Брокер доставляет сообщения от любого издателя подписчикам этих тем.

Например, подписчиком может быть интеллектуальная система кондиционирования, которая подписывается на «дом/спальня/температура» для соответствующей регулировки охлаждения. Или приложение безопасности, подписанное на оповещения о движении от датчиков.

Подписчики регистрируют подписки у брокера и получают сообщения с помощью команд протокола, таких как CONNECT, SUBSCRIBE и UNSUBSCRIBE. Подписки могут включать шаблоны подстановочных знаков для получения сообщений по различным темам.

Брокер

Брокер MQTT управляет соединениями издателей и подписчиков и маршрутизирует сообщения между ними. Она отвечает за:

  • Прием входящих сетевых подключений с использованием TCP/IP или WebSockets
  • Аутентификация клиентов и авторизация доступа
  • Получение опубликованных сообщений и отправка их подписанным клиентам.
  • Ведение информации о сеансах и подписках для подключенных клиентов.
  • Очередь сообщений в автономном режиме до повторного подключения клиентов
  • Общение с другими брокерами для формирования федеративной сети.

Таким образом, брокер составляет ядро любой MQTT-системы. Он должен быть хорошо масштабируемым и надежным, чтобы обрабатывать огромное количество устройств и сообщений.

Популярные брокеры с открытым исходным кодом, такие как Mosquitto, HiveMQ и EMQ, могут обслуживать тысячи клиентов на обычном оборудовании. Существуют также полностью управляемые облачные брокеры, такие как AWS IoT Core и Google Cloud IoT Core.

Изучение сообщений протокола MQTT

MQTT использует простой и легкий протокол для облегчения обмена сообщениями между клиентами в реальном времени. Давайте рассмотрим структуру сообщений протокола MQTT и ключевые понятия, связанные с этим.

Темы MQTT

Тема является важной частью любого сообщения MQTT. Темы обеспечивают иерархическую структуру для классификации и организации сообщений.

Публикуя сообщение, клиент задает тему для категоризации информации. Брокер использует темы для фильтрации сообщений и доставки их подписчикам.

Например, такая тема, как «дом/кухня/candle_flame_detector», четко определяет источник и цель сообщения. Элементы темы MQTT разделяются косой чертой с произвольной глубиной вложенности.

Для более широкой подписки на темы можно использовать подстановочные знаки, например # и +:

  • home/kitchen/# – Получение всех сообщений под кухней
  • +/candle_flame_detector – Получение всех сообщений от датчиков пламени

Полезная нагрузка сообщений

Полезная нагрузка содержит фактические данные, передаваемые в сообщении MQTT. Это может быть любой контент размером от нескольких байтов до килобайт данных.

Для показаний датчика полезная нагрузка будет содержать измеренное значение и метаданные, такие как единицы измерения, точность и т. д. Управляющие сообщения могут содержать директивы действий или обновления параметров в полезных данных.

Чтобы оптимизировать использование низкой пропускной способности, полезные нагрузки должны быть как можно меньшими и эффективными. MQTT хорошо работает в сетях с низкой пропускной способностью, поскольку необходимо передать только тему и небольшую полезную нагрузку.

Качество обслуживания

Как обсуждалось ранее, уровень качества обслуживания (QoS) является важным параметром в каждом сообщении MQTT. Он определяет гарантии доставки и основные накладные расходы на связь.

Три уровня QoS – это:

QoS 0 – пожар и забвение. Сообщение доставляется не более одного раза. По умолчанию для многих некритичных приложений.

QoS 1 — обеспечивает доставку хотя бы один раз с использованием подтверждений. Возможно получение дублирующих сообщений.

QoS 2 — доставляется ровно один раз путем обработки повторных передач. Используется 4-ступенчатое рукопожатие. Критичен для управляющих сообщений.

Брокер хранит сообщения QoS 1 и 2 до тех пор, пока не получит подтверждение об успешной доставке подписанным клиентам. Это предотвращает потерю данных, но требует дополнительных затрат на обработку.

Преимущества использования MQTT для IoT-приложений

MQTT предназначен для удовлетворения особых требований межмашинной связи в системах Интернета вещей. Рассмотрим некоторые ключевые преимущества:

Легкий

MQTT использует минимальный дизайн заголовка пакета с фиксированной длиной всего 2 байта для управляющих пакетов. Это обеспечивает большую эффективность, чем заголовки HTTP, в которых используются строки ASCII.

Управляющие пакеты, такие как CONNECT и PUBLISH, имеют максимальную длину полезной нагрузки всего 256 МБ. Это оптимизирует MQTT для сетей с низкой пропускной способностью и встроенных устройств с ограниченными возможностями обработки и памяти.

Низкое использование полосы пропускания

MQTT минимизирует использование пропускной способности сети за счет уменьшения объема передаваемых данных. Это позволяет ему работать в ограниченных сетях и снижает эксплуатационные расходы, такие как использование сотовых данных.

Накладные расходы протокола сокращаются за счет исключения ненужных передач. Например, в пакетах PUBLISH не указан адрес подписчика — доставкой занимается брокер. Пинги Keepalive отслеживают состояние соединения без передачи тяжелых данных.

Использование полосы пропускания линейно масштабируется в зависимости от количества клиентов, а не экспоненциально. Это обеспечивает поддержку большой плотности устройств.

Надежная доставка сообщений

Уровни качества обслуживания обеспечивают надежную передачу даже в ненадежных сетях, таких как спутниковая связь или шумные заводские цеха.

Для критических сообщений MQTT гарантирует доставку с помощью рукопожатий и подтверждений. Сохраненные сообщения пересылаются, когда клиенты повторно подключаются после отключения сети.

Эти функции делают MQTT надежной платформой для промышленной автоматизации, удаленного мониторинга оборудования и других критически важных приложений.

Масштабируемость

MQTT масштабируется до огромного количества клиентов и сообщений за счет использования эффективных сетевых шаблонов.

Архитектура публикации-подписки устраняет накладные расходы при обмене сообщениями один на один между клиентами. Подписки с подстановочными знаками и фильтрация по темам оптимизируют распределение данных.

Коммерческие брокеры и брокеры с открытым исходным кодом используют такие методы, как кластеризация, для одновременной обработки миллионов клиентов на обычных серверах.

Гибкость

MQTT предлагает непревзойденную гибкость и возможность настройки для различных сред и вариантов использования.

Клиенты могут выбирать один из нескольких уровней качества обслуживания, чтобы настроить гарантии доставки. Иерархии тем для обмена сообщениями могут быть разработаны с учетом любой онтологии. Полезная нагрузка эффективно передает данные любого формата.

Эта универсальность позволяет MQTT подключать разнообразные устройства в самых разных отраслях — от здравоохранения до нефтяных вышек!

Безопасность

MQTT обеспечивает безопасную связь с использованием шифрования TLS/SSL для базовых TCP-соединений.

Контроль доступа осуществляется с использованием имен пользователей и паролей клиентов. Политики авторизации определяют разрешенный доступ к темам и операции для каждого пользователя. В журналах аудита фиксируются события безопасности.

Брокеры MQTT могут интегрироваться с внешними поставщиками удостоверений через аутентификацию SASL. Зашифрованные клиентские сертификаты позволяют подключать одобренные устройства.

Открытый стандарт

MQTT — это открытый стандарт ISO (ISO/IEC PRF 20922) с открыто публикуемой документацией. Это обеспечивает совместимость между клиентами и брокерами разных поставщиков.

Существуют реализации брокеров с открытым исходным кодом, такие как Mosquitto и HiveMQ. Код клиентских библиотек MQTT доступен бесплатно для всех основных языков и платформ.

Открытый стандарт позволяет избежать привязки к поставщику и обеспечивает широкое внедрение. Сообщество MQTT продолжает способствовать развитию протокола.

Alotcer MQTT в действии: IoT-приложения

MQTT набирает огромную популярность во всех отраслях по мере расширения Интернета вещей. Давайте рассмотрим некоторые основные домены Интернета вещей, использующие MQTT:

Автоматизация умного дома

В умных домах MQTT подключает и управляет системами освещения, климата, развлечений, безопасности и другими системами:

  • Интеллектуальные термостаты публикуют показания температуры и соответствующим образом корректируют систему отопления, вентиляции и кондиционирования воздуха.
  • Датчики движения передают сигналы о вторжении в режиме реального времени
  • Системы освещения подписываются на графики управления лампочками.
  • Голосовые помощники используют MQTT для системных команд и уведомлений.

Платформы домашней автоматизации, такие как Home Assistant, используют MQTT в качестве основы для интеграции устройств. Он обеспечивает унифицированный конвейер для эффективной связи в домашней сети.

Промышленный IoT

AR7091 Промышленный шлюз Интернета вещей

Для промышленных сред MQTT передает ключевые данные между датчиками, контроллерами и системами мониторинга:

  • Датчики публикуют рабочие данные в режиме реального времени, такие как температура или уровень в резервуарах.
  • Подаются сигналы тревоги при выходе за пределы измерений
  • Системы управления корректируют параметры оборудования на основе анализируемых показателей
  • Панели мониторинга визуализируют агрегаты и аналитику для операторов

MQTT противостоит вызовам заводов (диапазон, помехи, шум) и обеспечивает Индустрию 4.0. Надежные данные в режиме реального времени обеспечивают автоматизацию и интеллект.

Носимые устройства

В сфере фитнеса и здоровья носимые устройства используют MQTT для передачи отслеживаемых данных о деятельности:

  • Фитнес-трекеры публикуют данные акселерометра, координаты GPS, показания пульса и т. д.
  • Данные объединяются в сводки действий для отображения пользователям.
  • Оповещения выдаются при обнаружении аритмии или отсутствии активности.
  • Диагностические правила, определяемые врачом, соответствуют пороговым значениям биомаркеров.

MQTT обеспечивает эффективную потоковую передачу биометрических данных и оповещений. Это облегчает разработку персонализированных приложений для цифровой медицины.

Это лишь несколько примеров. MQTT также поддерживает умные города, логистику цепочек поставок, возобновляемые источники энергии и многое другое!

Будущее MQTT: внедрение новых технологий

MQTT доказал свою эффективность как протокол обмена сообщениями IoT. Но он также обещает стать движущей силой для передовых технологических парадигм:

MQTT для пограничных вычислений

Граничные вычисления переносят обработку на локальные устройства, а не на централизованные облачные серверы. MQTT оптимален для потоковой передачи данных на пограничные узлы и обратно:

  • Показатели в реальном времени публикуются с близлежащего оборудования на периферийные шлюзы.
  • Шлюзы фильтруют и анализируют данные локально и отправляют агрегированные результаты в облако.
  • Облачные системы могут публиковать обновления конфигурации обратно на полевые устройства через MQTT.

Сокращая количество отключений в сети, MQTT раскрывает потенциал периферийного анализа в реальном времени.

Интеграция с AI/ML

MQTT идеально подходит для поддержки новых технологий искусственного интеллекта и машинного обучения в пространстве Интернета вещей:

  • MQTT передает высокочастотные данные с устройств Интернета вещей для моделирования моделей искусственного интеллекта.
  • MQTT доставляет выводы и указания из систем искусственного интеллекта обратно в работающее оборудование.
  • Во время обучения модели MQTT эффективно передает наборы данных от распределенных датчиков в облако.
  • Оповещения об аномалиях публикуются на основе отклонений, обнаруженных агентами ИИ в режиме реального времени.

MQTT обеспечивает высокоскоростные и надежные конвейеры данных, необходимые для автоматизации на основе искусственного интеллекта.

Легкая, но мощная природа MQTT делает его идеальной основой обмена сообщениями, открывающей новые возможности по мере развития технологий.

Часто задаваемые вопросы о MQTT

Для чего используется MQTT?

MQTT оптимизирован для сред Интернета вещей благодаря своей легкой архитектуре и надежности. Он соединяет маломощные устройства с ограниченными ресурсами, где пропускная способность ограничена. Типичные случаи использования включают телеметрию, уведомления о событиях и управляющее оборудование.

Как MQTT обеспечивает доставку сообщений?

MQTT обеспечивает различные уровни качества обслуживания (QoS). QoS 1 обеспечивает доставку хотя бы один раз с помощью подтверждений. QoS 2 доставляет сообщения ровно один раз, используя четырехэтапное рукопожатие между отправителем и получателем.

Подходит ли MQTT для приложений реального времени?

Да, MQTT предназначен для обмена сообщениями в реальном времени с малой задержкой. Сообщения доставляются немедленно, а не с помощью запланированного опроса. Это позволяет быстро реагировать на приложения, чувствительные ко времени.

Какие меры безопасности использует MQTT?

Брокеры MQTT защищают соединения с помощью TLS/SSL. Доступ можно контролировать с помощью аутентификации по имени пользователя и паролю и списков ACL. Сообщения также могут быть зашифрованы клиентами для обеспечения дополнительной конфиденциальности.

Как выбрать правильный уровень QoS в MQTT?

QoS 0 для некритических данных, таких как телеметрия. QoS 1 для важных оповещений и обновлений, дубликаты которых допустимы. QoS 2 для команд и действий, где важна ровно одна доставка. Баланс между надежностью и накладными расходами.

Заключение

Поскольку революция Интернета вещей продолжает ускоряться, MQTT зарекомендовал себя как предпочтительный протокол для надежного обмена сообщениями в реальном времени между устройствами и системами. Его эффективная архитектура публикации-подписки, созданная для ненадежных сетей, делает его идеальным для подключения огромного количества встроенных устройств, подключающихся к сети.

MQTT оптимизирует потоки связи между датчиками, контроллерами, приложениями и облаком. Это открывает новые захватывающие возможности, такие как аналитика в реальном времени и автоматизация на основе искусственного интеллекта. Благодаря MQTT предприятия могут получить такие преимущества, как повышение операционной эффективности, снижение затрат и новые возможности получения дохода.

В этом руководстве мы подробно рассмотрели, как на самом деле работает MQTT — его компоненты, такие как брокер и подписчики, формат сообщений протокола, различные уровни качества обслуживания и общие преимущества, которые он приносит. Мы видели MQTT в действии в различных отраслях, таких как умные дома, промышленная автоматизация и носимые устройства. И мы рассмотрели, как они могут поддерживать новые парадигмы, такие как периферийные вычисления и искусственный интеллект.

MQTT продолжает развиваться, а активное сообщество разрабатывает новые функции и интеграции. Это позволяет инженерам сосредоточиться на основной логике приложения, а не на проблемах подключения устройств и обмена сообщениями. По мере того, как ваши проекты Интернета вещей начинают развиваться, MQTT обеспечивает отказоустойчивый, масштабируемый и расширяемый уровень связи, чтобы привести в действие ваши инновации.

Так что приступайте к экспериментам с этим легким протоколом обмена сообщениями, который обеспечивает будущее подключенных вещей!