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

Модель Pub/Sub
Устройства публикуют данные в тематические каналы — topics. Подписчики объявляют интерес к каналам и получают новые сообщения без прямого соединения с источником. Иерархия тем поддерживает символы-подстановки для групповой подписки.
Каждое сообщение включает код качества обслуживания QoS. Выбор уровня зависит от требований к достоверности и задержке.
Качество сервиса
QoS 0 передаёт данные без подтверждения, дубликаты отсутствуют, пропуск возможен. QoS 1 гарантирует доставку минимум один раз, брокер подтверждает приём, принимающая сторона устраняет дубликаты. Os 2 обеспечивает получение точно один раз через двухфазный handshake, повышая трафик, но исключая дубли и потерю.
Флаг retain сохраняет последнее сообщение в канале, так что новый подписчик сразу получает актуальное состояние. Механизм Last Will and Testament уведомляет подписчиков об аварийном разрыве соединения клиента.
Сессии могут становиться долговременными: брокер хранит неотправленные сообщения и данные подписок, поддерживая устойчивость при перебоях сети.
TLS шифрует транспорт, сертификаты и токены применяются для аутентификации. Дополнительно конфигурируются списки разрешённых тем, лимиты подключений, защита от DoS.
Практика внедрения
Популярные брокеры: Eclipse Mosquito, EMQX, Hivemc, VerneMQ, RabbitMQ с плагином. Клиенты доступны для широкого спектра языков, включая C, C++, Java, Python, Rust, Go. Высоконагруженные инсталляции достигают миллионов одновременных соединений при грамотной горизонтальной компоновке.
MQTT применяют для телеметрии датчиков, управления умными объектами, транспортной логистики, удалённой энергетики, чатов в мобильных приложениях. Для облачной интеграции выпускаются шлюзы и bridge-модули, которые пересылают трафик между кластерами или переводят протокол в HTTP/AMQP.
Среди ограничений отмечаются базовая авторизация без сложных политик, отсутствие потоковой мультимедиа-оптимизации, размер сообщения до 256 МБ и зависимость от центрального брокера. Для отказоустойчивости разворачивают кластеры с репликацией, балансировщиками и газораспределением.
Эволюция семейства охватывает MQTT v5 с расширенными свойствами пакета, потоками причинно-следственной связности, улучшенным маршрутизатором ошибок. Для беспроводных сетей датчиков разрабатывается MQTT-SN, а внутри корпоративных шин вводится разведённая модель bridge-forwarding.
MQTT возник в 1999 году как легковесный транспортный протокол для телеметрии с ограниченными каналами связи. Главная цель — сократить накладные расходы на передаваемые данные и сохранить надёжность доставки при нестабильных сетях.
Работа строится вокруг трёх сущностей: издатель формирует сообщения, брокер принимает трафик и маршрутизирует его, подписчик получает интересующие топики. Механизм pub/sub устраняет прямое соединение между конечными узлами.
Структура протокола
Сообщение состоит из фиксированной части с флагами, переменной области со служебной информацией и полезной нагрузки. Ключевой элемент — строковый идентификатор темы, брокер сравнивает её с фильтрами подписчиков. Флаги QoS указывают уровень подтверждений, retain закрепляет последнее состояние, dup сообщает о повторной передаче.
MQTT использует TCP на портах 1883 либо 8883 при TLS. Заголовок протокола занимает минимум 2 байта, поэтому подходит для каналов с ограниченным бюджетом трафика. Документ спецификации описывает контроль длительности соединения через keep alive и ping-запросы.
Механизм доставки
Уровень 0 передаёт пакет без подтверждения. Уровень 1 просит брокер квитировать приём (PUBACK). Уровень 2 гарантирует единожды-точно: обмен пакетами PUBLIC, PUBLIC, PUB REL, PUB COMP исключает дублирование. Выбор уровня зависит от критичности данных и стоимости трафика.
Сеанс стартует с пакета CONNECT, где клиент объявляет идентификатор, параметры keep alive и сообщение завещания. При флаге clean session — новое состояние, иначе брокер удерживает непрочитанную очередь и отправляет её при возвращении клиента.
Безопасность и масштабирование
Аутентификация реализуется через пару пользователь-пароль либо X.509-сертификаты. Шифрование достигается TLS. Контроль доступа детализируется списками тем. Для высокой нагрузки брокеры выстраиваются в кластеры, организуют балансировку либо мосты между экземплярами.
Применения: аграрные датчики влажности, трекинг транспорта, обновления котировок на биржевых терминалах. Во всех сценариях критичны малое потребление пропускной способности, асинхронность и мгновенная маршрутизация.
Грамотная иерархия топиков задаёт масштабируемость: region/site/device/metric. Подстановочные символы «+» и «#» упрощают групповые подписки. Retain сохраняет актуальные показатели для новых клиентов. Мониторинг задержек, глубины очередей и потерь пакетов поддерживает стабильность.















