Быть в курсе
Назад к списку статей

Что такое MQTT-сервер

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

Что такое MQTT-сервер на примере

Представьте себе огромный почтовый офис в цифровом мире. Отправители, например, датчики температуры, приносят свои письма (данные о температуре) в этот офис, не зная точно, кто их будет читать. Получатели, например, приложение на вашем телефоне или система управления климатом, приходят в тот же офис и говорят: Я хочу получать все письма на тему «температура в гостиной». Почтовый офис принимает письма от отправителей, сортирует их по темам и доставляет тем, кто на эти темы подписан.

MQTT-server (MQTT Broker) ― это и есть такой цифровой почтовый офис. То есть ПО, которое является посредником при обмене информацией между разными устройствами и приложениями.

MQTT (Message Queuing Telemetry Transport) ― это сам протокол, а точнее, набор правил, по которым устройства взаимодействуют. Это очень легковесный протокол обмена данными по принципу публикация-подписка (publish-subscribe), созданный специально для работы с сетью с ограниченной пропускной способностью и устройствами с малыми вычислительными ресурсами, что типично для мира интернета вещей.

Хотите сосредоточиться на коде, а не на инфраструктуре? Reg.ru предлагает мощные облачные решения с автомасштабированием и удобным управлением данными. Разворачивайте MQTT-серверы и другие сервисы в пару кликов и автомасштабируйте их под нагрузку без ручных настроек.

Для чего нужен MQTT-сервер

Зачем нужен этот посредник и почему бы устройствам не общаться напрямую? MQTT-брокер решает несколько ключевых задач, особенно важных в мире IoT и распределенных систем:

Разделение отправителей и получателей

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

Эффективность и масштабируемость

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

Надежность доставки

Протокол MQTT дает возможность выбрать один из трех уровней обслуживания:

  • QoS 0: Не более одного раза (доставка не гарантирована).
  • QoS 1: Не менее одного раза (сообщение будет доставлено хотя бы раз, возможны дубликаты).
  • QoS 2: Ровно один раз (самый надежный уровень, гарантирует доставку без дубликатов).

Фильтрация и маршрутизация

Брокер отвечает за то, чтобы сообщения доставлялись только тем подписчикам, которые на них подписаны. Это достигается с помощью механизма тем (topics).

Управление состоянием

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

Источник: Shutterstock. Клиент также может заранее указать брокеру сообщение, которое тот опубликует, если брокер неожиданно отключится, например, из-за сбоя питания

Как работает MQTT-сервер

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

Любое устройство или приложение, желающее обмениваться сообщениями, сначала устанавливает TCP/IP соединение с MQTT-брокером. Клиент может быть как издателем, так и подписчиком, или и тем, и другим одновременно.

Вся коммуникация строится вокруг тем. Тема ― это строка в иерархическом формате, похожая на путь к файлу (например, myhome/livingroom/light/status). Темы позволяют структурировать поток сообщений.

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

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

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

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

Протокол MQTT

Правила работы сервера ― это и есть протокол MQTT. Представьте его как универсальный язык, который понимают все клиенты и брокер, например, Mosquitto, HiveMQ, VerneMQ, которые помогают эффективно обмениваться сообщениями.

Модель Публикация-Подписка ― это основа протокола. Вместо того, чтобы отправлять сообщение конкретному получателю, отправитель просто публикует сообщение на определенную тему через брокера. Получатели заранее подписываются на интересующие их темы у того же брокера. Брокер сам разбирается, кому доставить сообщение.

Темы ― это как адрес или метка для сообщений. Темы имеют иерархическую структуру, разделенную слешами (/), например: умныйдом/гостиная/датчиктемпературы/значение.

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

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

Преимущества и недостатки MQTT-сервера

Как и любая технология, использование MQTT-сервера (брокера) имеет свои сильные и слабые стороны. Давайте их рассмотрим.

Преимущества

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

  • Брокеры спроектированы для обработки тысяч и даже миллионов одновременных подключений и большого объема сообщений.
  • Гибкие уровни QoS позволяют выбрать нужный баланс между скоростью и гарантией доставки для разных типов данных.
  • Издатели и подписчики не зависят друг от друга напрямую. Это упрощает разработку, тестирование и модификацию системы. Можно заменять или обновлять компоненты независимо.
  • Клиенты могут быть одновременно и издателями, и подписчиками, что позволяет легко реализовывать сценарии запроса-ответа или удаленного управления устройствами.
  • MQTT-брокеры могут использовать механизмы аутентификации (имя пользователя/пароль, токены) и шифрование (TLS/SSL), что повышает уровень безопасности, критически важный для IoT.

Недостатки

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

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

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

А если вам нужно быстро развернуть MQTT-сервер без сложных настроек, можно воспользоваться облачными решениями от Reg.ru

Андрей Лебедев

Что такое OLAP-система: объясняем простыми словами
В работе онлайн-бизнеса важную роль играют данные и работа с ними. Эти данные имеют разные форматы и могут собираться из...
Подробнее
HashiCorp Vault: как он помогает защитить ваши секреты
В любой современной ИТ-инфраструктуре количество конфиденциальных данных стремительно растет: пароли баз данных, API-ключи, сертификаты, токены доступа. Хранить их в коде,...
Подробнее
Что такое MQTT-сервер
Давайте погрузимся в мир интернета вещей и разберемся с ключевым элементом его коммуникаций ― MQTT-сервером. Как организовать поток данных от...
Подробнее
Как настроить резервное копирование в S3
Резервное копирование данных из объектного хранилища S3 — это процесс создания копий данных, которые хранятся в Amazon S3 или аналогичных...
Подробнее
Как настроить синхронизацию часов с помощью NTP
Network Time Protocol (NTP) — сетевой протокол для синхронизации системного времени компьютеров через сетевое соединение. При установке соединения NTP-клиент (ваш...
Подробнее
Что такое ETL и с какими задачами поможет
Каждый современный бизнес работает с данными — много и постоянно. Но просто собрать данные недостаточно. Чтобы они стали полезными, их...
Подробнее
WAF (Web Application Firewall): как работает защита веб-приложений
Современные сайты и онлайн-сервисы постоянно подвергаются атакам со стороны злоумышленников, которые стараются найти самые слабые места в защите. Один из...
Подробнее
Интеграция облачных технологий и ленточных решений: зачем это нужно
В последнее десятилетие в сфере бизнеса происходит постепенная цифровизация: организации чаще предпочитают хранить документы и другую важную информацию в электронном...
Подробнее
Кейс Stworka: как создать ERP в облаке для 5000 строительных компаний
А также запустить маркетплейс для строителей и обрабатывать 1,5 млн артикулов ежедневно. Рассказываем, как компания Stworka развернула IT-инфраструктуру в Облаке...
Подробнее
Системы контроля версий: зачем они нужны и как их использовать
Мир разработки ПО издалека кажется непонятным и запутанным, но существуют инструменты, которые значительно упрощают жизнь и делают работу более эффективной....
Подробнее