Какая версия протокола MQTT лучше использовать?
MQTT (Telemetry Transport Telemetry Transport) - это легкий протокол сообщений, основанный на методе публикации/подписки в соответствии с стандартом ISO, который обычно используется в связи между устройствами и приложениями, такими как Интернет вещей и умные дома.
Введение в MQTT
Протокол
MQTT состоит из издателя/абонентского и брокера -брокера. Как показано
на рисунке 1, издатель несет ответственность за то, как выдвигает
сообщения брокеру, и брокер выдвигает сообщения к соответствующим
подписчикам.
Издатель : устройство отправляет сообщения подписчикам по темам.
Подписчик : как устройство терминала, абонент получает сообщения от издателя через тему.
Брокер сообщений (брокер)
: сервер выступает в качестве центрального центра, ответственного за
связь на уровне организации между издателями и подписчиками.
Основная версия MQTT
Есть две основные версии MQTT: V3 и V5. Принципы этих двух версий в основном одинаковы, но между ними существуют некоторые ключевые различия, и следующее введет различия между ними от следующих аспектов.
Понять протокол MQTT
Протокол MQTT - спецификации проектирования, характеристики, принципы
1. Развитие
Энди
Стэнфорд-Кларк из IBM и Алан Нип из Cirrus Link написала первую версию
протокола в 1999 году. изменений в спецификации может быть внесено.
2. Обзор
Протокол
MQTT (Telelemetry Transport) MQTT (Publish Queue Telemetry) - это
протокол сообщений, основанный на парадигме публикации/подписки в
соответствии с стандартом ISO (ISO/IEC PRF 20922). Он работает в
семействе протоколов TCP/IP и является протоколом сообщений
публикации/подписки, разработанного для удаленных устройств с низкой
производительностью оборудования и плохими условиями сети.
MQTT-это
протокол Transport Publiching/подписка на клиенту-сервер. Протокол MQTT
легкий, простой, открытый и прост в реализации. Эти характеристики
делают его широко применимым. Такие как: общение с машиной до машины
(M2M) и Интернет вещей (IoT). Они также широко используются в передаче
датчиков через спутниковые ссылки, случайные медицинские устройства на
дистанции, умные дома и некоторые миниатюрные устройства.
3. Спецификация
Из -за специфики среды IoT, MQTT Design должен соответствовать следующим спецификациям:
① Упрощенные, не добавляя непростые функции;
② Опубликовать/подписаться (pub/sub) режим для облегчения передачи сообщений между датчиками;
③ Позвольте пользователям динамически создавать темы, нулевые затраты на эксплуатацию и обслуживание;
④ минимизировать количество передачи для повышения эффективности передачи;
⑤ Принимайте такие факторы, как низкая пропускная способность, высокая задержка и нестабильная сеть;
⑥ Поддержка непрерывного управления сеансом;
⑦ Поймите, что вычислительная мощность клиента может быть низкой;
⑧ Обеспечить управление качеством обслуживания;
⑨ Предполагая, что данные являются агностическими, тип и формат передаваемых данных не требуются для поддержания гибкости.
4. Особенности
Протокол MQTT-это протокол, предназначенный для связи между удаленными датчиками и управляющими устройствами в ненадежных сетях с низкой пропускной способностью. Он имеет следующие основные характеристики:
①
Используйте режим сообщения публикации/подписки, чтобы предоставить
публикацию сообщений и разместить прикладные программы «Одно ко многим».
② Передача сообщений для маскировки контента полезной нагрузки.
③ Используйте TCP/IP для обеспечения сетевого соединения.
④ Есть три вида качества услуг публикации сообщений: «не раз один раз», «по крайней мере один раз» и «только один раз».
⑤
Небольшая передача, небольшие накладные расходы (заголовок с
фиксированной длиной составляет 2 байта), обмен протоколами
минимизируется для уменьшения сетевого трафика.
⑥ Используйте
функции последней воли и завета, чтобы уведомить соответствующие стороны
механизма аномального прерывания клиента.
5. Принцип
Реализация
протокола MQTT требует завершения связи между клиентом и сервером. Во
время процесса связи в протоколе MQTT есть три идентификатора: Publisher
(Publish), брокер (сервер) и абонент (подписка). Среди них издатель и
абонент сообщений являются клиентами, агент сообщений является сервером,
а издатель сообщения может быть абонентом одновременно.
Сообщение, передаваемое MQTT, разделено на две части: тема (тема) и загрузка (полезная нагрузка):
Тема,
которая может быть понята как тип сообщения, после того, как подписчик
подписывается (подписки), он получит содержание сообщения (полезная
нагрузка) по теме;
полезная нагрузка, которую можно понимать как
содержание сообщения, относится к конкретному контенту, который абонент
хочет использовать.
Клиент MQTT - это приложение или устройство,
использующее протокол MQTT, который всегда устанавливает сетевое
соединение с сервером. Клиенты могут быть:
(1) опубликовать информацию, на которую могут подписаться другие клиенты;
(2) подписаться на сообщения, опубликованные другими клиентами;
(3) отписать или удалить сообщения из приложения;
(4) Отключите от сервера.
Сервер MQTT называется «Брокер сообщений»
(брокер), который может быть приложением или устройством. Он расположен
между издателями сообщений и подписчиками. Он может принимать сетевые
подключения от клиентов; Принять информацию о приложениях,
опубликованную клиентами; обработать подписку и отказа от подписки от
клиентов; и пересылать сообщения приложений для подписанных клиентов.
MQTT
V5 добавляет поле свойства, которое позволяет MQTT V5 для поддержки
более новых функций. В MQTT V3 MQTT не имеет места для расширения, что
ограничивает возможность расширения MQTT.
Тема является
основной концепцией в MQTT, которая используется для определения
содержания и намерения сообщения. В MQTT V3 тема - это просто простая
строка, структура которой представляет собой серию слов, разделенных
снесениями.
Например,
тема MQTT V3 может быть датчиками/температурой/комнатой1, где датчики
являются темой верхнего уровня, температура является ее подторией, а
Room1-это конкретное устройство под подтопией.
Однако в MQTT V5 структура темы была расширена, чтобы включить несколько более продвинутых функций. В частности, MQTT V5 представляет новую концепцию, называемую псевдонимом темы, которая позволяет клиентам сопоставлять строки темы с предопределенными идентификаторами тем, уменьшая сетевой трафик и размер сообщений.
Псевдоним темы поддерживается клиентом и сервером соответственно, а его жизненный цикл и объем ограничены текущим соединением.
Для
темы установите псевдоним, когда публикуется в первый раз, а затем вы
можете использовать тему псевдонима для публикации. Это позволяет
клиентам отправлять только идентификатор темы при отправке сообщения без
необходимости отправлять полную строку темы каждый раз. Это полезно для
устройств IoT и сред с ограниченной пропускной способностью сети.
MQTT
V5 представляет новый тип подписки, называемый общей подпиской. Более
гибкие подписки могут быть достигнуты с помощью дополнительных флагов и
функций фильтрации. Как показано на рисунке ниже, общая подписка
позволяет нескольким клиентам делиться подпиской и распространять ее в
соответствии с определенными правилами. Этот тип подписки очень полезен
для подписки на темы с высокой нагрузкой, поскольку он может
сбалансировать запросы на подписку и снизить давление нагрузки отдельных
клиентов.
Кроме
того, MQTT V5 добавляет концепцию параметров подписки, которая может
указывать параметры подписки, такие как уровень QoS, сохранять как
публикация, удерживать обработку, жизненный цикл сообщений и т. Д., Для
более мелкого управления поведением подписки.
Будет ли сообщения
о способности MQTT изящно отправлять завещания третьим лицам для
устройств, которые могут неожиданно отключиться. При полезной нагрузке
сообщения Connect некоторые поля изменились, среди которых сообщением
(сообщение) стало полезной нагрузкой (будет полезной нагрузкой).
Будет ли свойства (будут свойства) - это новое поле в MQTT V5. Различные типы сообщений имеют разные свойства. Например, соединения сообщений имеют такие атрибуты, как максимальная длина сообщений и интервал истечения сессии, а также сообщения подписки имеют идентификаторы подписки и т. Д. Атрибуты. Более того, по сравнению с MQTT V3, содержание сообщения Will становится более гибким и может содержать любую тему и любое содержание сообщения.
MQTT
V5 поддерживает более подробный механизм обработки ошибок, который
может найти и решать проблемы с помощью кодов ошибок и причин ошибок. В
то же время, MQTT V5 также вводит новое управляющее сообщение - Mancence
Message, которое может помочь клиенту и серверу лучше обрабатывать
условия ошибки.
MQTT управление потоком
MQTT
V5 вводит некоторые новые механизмы для управления потоком на основе
версии V3, чтобы лучше контролировать передачу и обработку сообщений, а
также избежать заторов сети и высокой нагрузки, вызванной чрезмерной
скоростью передачи сообщений.
Максимальный предел размера пакета
(максимальный размер пакета): MQTT V5 позволяет клиенту и серверу
договориться о максимальном размере пакета во время рукопожатия. Как
показано на рисунке ниже, этот максимальный предел размера пакета может
использоваться для управления максимальным размером сообщения,
передаваемых между клиентом и сервером, предотвращая перегрузку сети и
чрезмерную нагрузку из -за чрезмерно больших передаваемых сообщений.
Очередь
сообщений (очередь сообщений): Когда сообщение, отправленное сервером,
превышает скорость обработки клиента, сервер может сохранить сообщение в
очереди сообщения и дождаться его обработки клиента. MQTT V5 определяет
размер очереди и тайм -аут очереди сообщений, чтобы контролировать
размер и жизненный цикл очереди сообщений.
Эффективность производительности MQTT
По
сравнению с MQTT V3, MQTT V5 может лучше обрабатывать крупномасштабную
передачу данных и повысить эффективность и производительность связи.
Например, MQTT V5 поддерживает такие функции, как пакетная публикация и
предварительная выборка сообщений, что может значительно уменьшить
накладные расходы MQTT Communication.
Короче говоря, по
сравнению с MQTT V3, MQTT V5 имеет больше новых функций и безопасности.
Тем не менее, следует отметить, что MQTT V5 добавил много новых функций и
концепций, поэтому при использовании MQTT V5 необходимо иметь глубокое
понимание новых функций протокола MQTT, чтобы этот новый протокол мог
быть лучше использован Для создания надежного приложения