Что такое MQTT и почему это лучший протокол для IoT?

Введение в протокол MQTT

Обзор

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

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

  • Просто и легко реализовать
  • Поддержка QoS (сложная сетевая среда устройств)
  • Легкий и экономичный (потому что пропускная способность в то время была дорогой)
  • Данные не имеют значения (формат данных полезной нагрузки не имеет значения)
  • Постоянная осведомленность о сеансе (всегда известно, подключено ли устройство к сети)

По словам Арлена Ниппера в IBM Podcast, MQTT изначально назывался MQ TT. Обратите внимание на пространство между MQ и TT. Полное название — MQ Telemetry Transport. Это протокол передачи данных в режиме реального времени, который он разработал, работая над системой SCADA для трубопровода сырой нефти для Conoco Phillips в начале 1990-х годов. Его цель состояла в том, чтобы позволить датчикам связываться с IBM MQ Integrator через VSAT, который имеет ограниченную полосу пропускания. Название MQ TT был выбран в соответствии с отраслевой практикой, поскольку компания Nipper занимается дистанционным зондированием, сбором данных и мониторингом.

Сравнение MQTT и других протоколов

MQTT против HTTP

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

MQTT против XMPP

Протокол MQTT прост и легок в дизайне и гибок в маршрутизации. Он полностью заменит протокол XMPP эпохи ПК в области мобильного Интернета и обмена сообщениями IoT.

  • Сообщения MQTT небольшие и их легко кодировать и декодировать, в то время как XMPP основан на тяжелом XML, а сообщения большие и громоздкие для взаимодействия.
  • MQTT основан на модели публикации-подписки, которая является более гибкой, чем двухточечная маршрутизация сообщений XMPP на основе JID.
  • MQTT поддерживает различные типы сообщений, такие как JSON, двоичные и т. д. XMPP использует XML для передачи сообщений, а двоичные файлы должны быть закодированы в Base64 и обработаны другими методами.
  • MQTT гарантирует надежную передачу сообщений через QoS; протокол XMPP не определяет подобный механизм.

Почему MQTT — лучший протокол для Интернета вещей?

Согласно последнему исследовательскому отчету «Status of the IoT Spring 2022» от IoT Analytics, ожидается, что к 2022 году рынок IoT вырастет на 18% и достигнет 14,4 млрд активных подключений.

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

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

Протоколы Интернета вещей

Легкий и эффективный

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

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

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

  • качество обслуживания 0: Сообщение передается не более одного раза.

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

  • качество обслуживания 1: Сообщение передается хотя бы один раз.

    Он содержит простой механизм повторной передачи: издатель отправляет сообщение, затем ждет ACK от получателя и повторно отправляет сообщение, если ACK не получен. Эта модель гарантирует, что сообщение придет хотя бы один раз, но не гарантирует, что сообщение будет повторяться.

  • качество обслуживания 2: Сообщение передается только один раз.

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

Подробнее о MQTT QoS можно прочитать в блоге: Введение в QoS MQTT.

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

Подключайте массивные IoT-устройства

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

Поддержка MQTT-брокер незаменим для подключения массивных IoT-устройств. В настоящее время брокер MQTT, который поддерживает наибольшее количество одновременных подключений, — это EMQX. Недавно выпущенный EMQX 5.0 достигнуто 100 миллионов соединений MQTT + 1 миллион сообщений в секунду через кластер из 23 узлов, что делает его самым масштабируемым брокером MQTT в мире на сегодняшний день.

Безопасная двусторонняя связь

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

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

Keep Alive и Stateful Sessions

Чтобы справиться с нестабильностью сети, MQTT предоставляет Сохранить жизнь механизм. В случае длительного отсутствия обмена сообщениями между клиентом и сервером Keep Alive предотвращает разрыв соединения. Если соединение разорвано, клиент может мгновенно обнаружить это и немедленно восстановить соединение.

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

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

MQTT 5.0 и MQTT 3.1.1

Через четыре года после того, как MQTT 3.1.1 был выпущен и стал стандартом OASIS, был выпущен MQTT 5.0. Это серьезное улучшение и обновление. Он предназначен не только для удовлетворения текущих потребностей отрасли, но и для адекватной подготовки к будущему развитию отрасли.

На основе версии 3.1.1 в MQTT 5.0 добавлены функции задержки сеанса/сообщения, коды причин, псевдонимы тем, свойства пользователя, общие подписки и т. д., которые лучше соответствуют потребностям современных приложений IoT. Он повышает производительность, стабильность и масштабируемость больших систем. В настоящее время MQTT 5.0 стал предпочтительным протоколом для большинства предприятий IoT, и мы рекомендуем разработчикам, которые плохо знакомы с MQTT, использовать эту версию напрямую.

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

MQTT-брокер

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

EMQX — широко используемый крупномасштабный распределенный MQTT-брокер для IoT. С момента его выпуска с открытым исходным кодом на GitHub в 2013 году его скачали более 10 миллионов раз по всему миру, а общее количество подключенных ключевых устройств IoT превышает 100 миллионов.

Вы можете установить версию EMQX 5.0 с открытым исходным кодом с помощью следующей команды Docker, чтобы испытать ее.

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest

Вы также можете создавать полностью размещенные сервисы MQTT непосредственно в облаке EMQX.

MQTT-клиент

Приложениям MQTT обычно требуется реализация связи MQTT на основе клиентских библиотек MQTT. В настоящее время практически все языки программирования имеют зрелые клиентские библиотеки MQTT с открытым исходным кодом. Итак, вы можете обратиться к Полный список клиентских библиотек MQTT сопоставляется EMQ, чтобы выбрать подходящую клиентскую библиотеку для создания клиента MQTT, соответствующего их бизнес-потребностям. Вы также можете посетить MQTT-программирование Серия блогов, предоставленная EMQ, чтобы узнать, как использовать MQTT в Java, Python, PHP, Node.js и других языках программирования.

Разработка приложений MQTT также неотделима от поддержки инструмента тестирования MQTT. Простой в использовании и мощный инструмент тестирования MQTT может помочь разработчикам сократить цикл разработки и создать стабильное приложение IoT.

MQTT X является кроссплатформенным настольным клиентом с открытым исходным кодом. Он прост в использовании и обеспечивает комплексную функциональность MQTT 5.0, тестирование функций и работает на macOS, Linux и Windows. Он также предоставляет версии для командной строки и браузера для удовлетворения потребностей тестирования MQTT в различных сценариях.

MQTT-клиент

Быстрый старт с MQTT

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

Первоначально опубликовано на https://www.emqx.com.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *