Мы уже говорили о протоколах SSL и TCP/IP. Сегодня мы подробно поговорим о протоколе MQTT, поскольку многие сообщения теперь поддерживают протокол MQTT, например RabbitMQ и Kafka. Сегодня мы поговорим о нем подробно. введение в то, что такое протокол MQTT.
Протокол MQTT — это протокол передачи очереди сообщений, который использует механизмы подписки и публикации. Подписчики получают только те данные, на которые они подписались, и не получают неподписанные данные. Это не только обеспечивает обмен необходимыми данными, но и позволяет избежать их хранения. недействительных данных и их обработки. Поэтому он широко используется в сфере Интернета вещей, связи между датчиками и серверами и сбора информации.
Поскольку это протокол, по сравнению с протоколом TCP/IP, на каком уровне иерархии он находится?
А Фен ранее сказал, что эталонную модель TCP/IP можно разделить на четыре уровня: уровень приложений, транспортный уровень, сетевой уровень и уровень сетевого интерфейса. TCP и UDP расположены на транспортном уровне, а общие протоколы на уровне приложений включают HTTP, FTP, SSH и т. д. Протокол MQTT работает поверх TCP и является протоколом прикладного уровня. Поэтому MQTT можно использовать везде, где поддерживается стек протоколов TCP/IP.
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 байта), а обмен протоколами минимизирован для уменьшения сетевого трафика.
Именно поэтому во введении сказано, что он очень подходит для «связи между датчиками и серверами, а также сбора информации в области Интернета вещей». Вы должны знать, что вычислительная мощность и пропускная способность встроенных устройств являются относительными. слабый, поэтому для передачи сообщений больше подходит именно этот протокол.
Фиксированный формат заголовка следующий:
Биты 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, делятся на две части: тему и полезную нагрузку:
1) Под темой можно понимать тип сообщения. После того, как подписчик подпишется (Subscribe), он получит содержимое сообщения (полезную нагрузку) темы.
2) Под полезной нагрузкой можно понимать содержимое сообщения, которое относится к конкретному контенту, который хочет использовать подписчик (ограниченный размер).
Процесс отправки и получения сообщений MQTT:
Это немного отличается от традиционных очередей. ClientB существовать ClientA Опубликовать Сообщение Подпишитесь позже Topic1,ClientB Это сообщение не будет получено.
Что касается основ MQTT, А Фань многому научился. Когда А Фань узнает что-то новое о MQTT в будущем, А Фань продолжит делиться этим со всеми.