Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MQTT глазами BE для работы с embedded устройств...

MQTT глазами BE для работы с embedded устройствами – Сергей Макаров, PythoNN

Sobolev Nikita

October 21, 2026

Transcript

20 slides
  1. Гарантии доставки Система At most once Не более 1 раза

    At least once Хотя бы 1 раз Exactly once Ровно 1 раз MQTT QoS 0 QoS 1 QoS 2 RabbitMQ AMQP 0-9-1 Auto ack Confirms и ручной ack Нет встроенного режима Core NATS По умолчанию Нет Нет NATS JetStream AckNone AckExplicit Deduplication и double ack Kafka Commit offset до обработки Commit offset после обработки Нет на уровне доставки QoS 2: однократная доставка между отправителем и получателем. JetStream: окно дедупликации. Kafka: exactly once результата обработки. 2
  2. Пару слов об MQTT Протокол обмена сообщениями для IoT Заголовок

    Длина топика t 123 2 байта 2 байта 1 байт 3 байта MQTT vs NATS/Kafka/AMQP Компактность, QoS, Last Will и Topic Alias 3
  3. Бенчмарки 8 байт 5 байт метаданных + 3 байта payload

    MQTT QoS 0 Core NATS HTTP/1.1 AMQP 0-9-1 8 14 49 52 payload "123" / topic "t" / соединение уже открыто Без сжатия и TLS. NOACK 4
  4. Бенчмарки 14 байт 10 байт PUBLISH + 4 байта PUBACK

    MQTT QoS 1 JetStream AMQP 0-9-1 HTTP/1.1 14 52 73 76 payload "123" / topic "t" / соединение уже открыто Без сжатия и TLS QoS 1 5
  5. Persistent session Сессия переживает отключение устройства Брокер сохраняет После восстановления

    сессии Подписки Не нужно подписываться заново Сообщения QoS 1/2 для офлайн-клиента Клиент получает накопленные сообщения Незавершённый обмен Клиент и брокер продолжают доставку по QoS Возвращаемся с тем же Client ID MQTT 5: Clean Start = 0, Session Expiry Interval > 0 Сроки хранения и лимиты брокера ограничивают очередь сообщений 6
  6. Один топик, много подписчиков Устройство публикует телеметрию и получает команды

    Телеметрия Устройство devices/42/commands devices/42/telemetry MQTT брокер Backend Команды Подписчики телеметрии Мониторинг Автоматизация Last Will: брокер сообщит, если устройство пропало 7
  7. Создавать свои устройства ESP32 Датчики и реле Котёл и солнечный

    инвертор Собственная прошивка MQTT ESP Python BE 11
  8. Python-клиенты для MQTT Paho Синхронный API Callbacks aiomqtt v2 aiomqtt

    v3 Paho mqtt5 / Rust asyncio API поверх Paho Нативный asyncio Новая реализация Один сценарий: telemetry и status 12
  9. Paho • • • • Императивный роутинг Отсутствует строгая типизация

    Нужны треды для нормальной работы Отсутствует реконнект 13
  10. aiomqtt v3 • • • • • • Попытка в

    нативный asyncio Сырой клиент Потеря сообщений Rust codec Нет реконнектов Императивный роутинг 15
  11. FastStream Фреймворк для работы с брокерами сообщений на Python Бизнес-логика

    FastStream MQTT Маршрутизация, валидация и инфраструктурный код 16
  12. zMQTT • • • • • • Нативный asyncio Без

    Paho Сообщения не теряются Zero dependency 100% покрытия протокола Полное покрытие типами
  13. 18

More Decks by Sobolev Nikita

Other Decks in Programming