Узнайте о протоколе MQTT в одной статье
Узнайте о протоколе MQTT в одной статье

Мы уже говорили о протоколах SSL и TCP/IP. Сегодня мы подробно поговорим о протоколе MQTT, поскольку многие сообщения теперь поддерживают протокол MQTT, например RabbitMQ и Kafka. Сегодня мы поговорим о нем подробно. введение в то, что такое протокол MQTT.

Что такое протокол MQTT

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

Поскольку это протокол, по сравнению с протоколом TCP/IP, на каком уровне иерархии он находится?

А Фен ранее сказал, что эталонную модель TCP/IP можно разделить на четыре уровня: уровень приложений, транспортный уровень, сетевой уровень и уровень сетевого интерфейса. TCP и UDP расположены на транспортном уровне, а общие протоколы на уровне приложений включают HTTP, FTP, SSH и т. д. Протокол MQTT работает поверх TCP и является протоколом прикладного уровня. Поэтому MQTT можно использовать везде, где поддерживается стек протоколов TCP/IP.

Основные возможности протокола MQTT

1) Открытый протокол сообщений, простой и легкий в реализации.

2) Используйте модель обмена сообщениями публикации/подписки для обеспечения публикации сообщений «один ко многим» и разделения приложений.

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

4) Основанный на сетевом соединении TCP/IP, он обеспечивает упорядоченное двустороннее соединение без потерь.

Основной MQTT основан на TCP-соединениях для передачи данных, но существует также версия на основе UDP, называемая MQTT-SN. Поскольку эти две версии основаны на разных методах подключения, они, естественно, имеют разные преимущества и недостатки.

5) Поддержка качества обслуживания сообщений (QoS), гарантия надежной передачи. Существует три типа качества службы публикации сообщений:

QoS0: «Не более одного раза», публикация сообщений полностью зависит от базовой сети TCP/IP. Возможна потеря или дублирование сообщения. Этот уровень можно использовать в ситуациях, когда для данных датчиков окружающей среды не имеет значения, потеряна ли прочитанная запись, поскольку вскоре будет отправлена ​​вторая. Этот метод в основном использует обычную отправку приложения. Если ваше интеллектуальное устройство не подключено к Интернету во время отправки сообщения, и push-уведомление не было получено в прошлом, оно не будет получено при повторном подключении к сети.

QoS1: «По крайней мере один раз», прибытие сообщения гарантировано, но может произойти дублирование сообщений.

QoS2: «Только один раз», гарантируя, что сообщение придет один раз. Этот уровень может использоваться в некоторых биллинговых системах с более строгими требованиями. В биллинговых системах дублирующиеся или отсутствующие сообщения могут привести к неверным результатам. Эту высококачественную службу публикации сообщений можно также использовать для push-уведомлений в приложениях для обмена мгновенными сообщениями, гарантируя, что пользователи получат их только один раз.

Что означает Qos0? То есть, если в качестве качества выпуска используется эта конфигурация Qos0, давайте в качестве примера возьмем клиент и сервер, то есть клиент отправляет сообщение на сервер, но сервер в это время его не получает, и конфигурация «не более одного раза», это В настоящее время клиент больше не будет отправлять одно и то же сообщение на сервер. Мне все равно, получите вы его или нет. Я настроил, что его можно отправить не более одного раза.

Точно так же QoS1 есть хотя бы один раз, то есть когда клиент отправляет сообщение на сервер, если прибытие сообщения не гарантировано, оно может продолжать отправляться в это время, мне все равно, как. Я отправляю его много раз, пока вы не скажете мне, что вы. Когда я получу сообщение, я отправлю его!

QoS2 является относительно строгим. Почему вы это говорите? Это эквивалентно тому, что клиент отправляет сообщение серверу. В настоящее время необходимо убедиться, что клиент отправляет его один раз, а сервер получает его один раз. Только один раз концепция.

6) Малая передача, накладные расходы очень малы (заголовок фиксированной длины — 2 байта), а обмен протоколами минимизирован для уменьшения сетевого трафика.

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

MQTT-сообщение
  • фиксированный заголовок header) 所有сообщение Все включают
  • переменный заголовок header) частьсообщение Включать
  • Часть полезной нагрузки сообщение содержит

Фиксированный формат заголовка следующий:

Биты 0–3 фиксированного заголовка являются битами флага, а значение битов 4–7 первого байта определяет тип сообщения.

Тип сообщения

ценить

описывать

CONNECT

1

Клиент инициирует запрос на подключение к прокси

CONNACK

2

Подтверждение подключения

PUBLISH

3

Опубликовать сообщение

PUBACK

4

Подтверждение выпуска

PUBREC

5

Релиз получен (QoS2)

PUBREL

6

Выпуск Выпуск (QoS2)

PUBCOMP

7

Выпуск завершен (QoS2)

SUBSCRIBE

8

Клиент инициирует запрос на подписку к брокеру

SUBACK

9

Подтверждение подписки

UNSUBSCRIBE

10

Отписаться

UNSUBACK

11

Отмена Подтверждение подписки

PINGREQ

12

PING-запрос

PINGRESP

13

PING-ответ

DISCONNECT

14

Отключить

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

Реализация протокола MQTT

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

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

1) Под темой можно понимать тип сообщения. После того, как подписчик подпишется (Subscribe), он получит содержимое сообщения (полезную нагрузку) темы.

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

Модель сообщений MQTT на основе подписки и публикации.

Процесс отправки и получения сообщений MQTT:

  • ClientA связан с Broker;
  • ClientB подключается к Broker и подписывается на тему Topic1;
  • ClientA отправляет брокеру сообщение с темой Topic1;
  • Брокер получает сообщение от ClientA, обнаруживает, что ClientB подписался на Topic1, а затем пересылает сообщение ClientB;
  • ClientB получает это сообщение от Broker.

Это немного отличается от традиционных очередей. ClientB существовать ClientA Опубликовать Сообщение Подпишитесь позже Topic1,ClientB Это сообщение не будет получено.

Что касается основ MQTT, А Фань многому научился. Когда А Фань узнает что-то новое о MQTT в будущем, А Фань продолжит делиться этим со всеми.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose