Протокол MQTT - Виды взаимодействия в Интернете вещей
MQTT (MQ Telemetry Transport) - это протокол, поддерживаемый микроброкером Lotus Expeditor. MQTT представляет собой основанный на TCP/IP протокол обмена сообщениями publish/subscribe (издатель-подписчик), предназначенный для использования в сетях, требующих минимальных накладных расходов. Микроброкер - это маленький брокер сообщений (менее 2 МБ Java-кода), спроектированный для развертывания на небольших специализированных устройствах, часто удаленных от корпоративного информационного центра.
Для публикации сообщений при помощи MQ Telemetry Transport требуется соединение c микроброкером Lotus Expeditor или другим сервером обмена сообщениями, поддерживающим протокол MQTT, например, WebSphere Message Broker. Для создания подключения к брокеру необходимо выполнить несколько шагов. Создается объект свойств MQTT, который затем передается фабрике создания клиента. Этот объект свойств предоставляет конфигурацию созданному экземпляру клиента. Одно из этих свойств - булев флаг (Boolean flag), указывающий, является ли клиентское приложение "клиентом без сохранения сеанса". Если значение флага - true, при каждом подключении клиент не будет знать о предыдущем соединении с брокером (например, о любых ранее сделанных подписках или об ожидающих доставки сообщениях). Если значение флага - false, состояние клиента при различных подключениях к брокеру остается прежним; например, клиентскому приложению не потребуется повторная подписка при каждом последующем переподключении. Кроме того, в этом случае клиент и брокер пытаются возобновить любой выполняющийся в данный момент обмен сообщениями (в зависимости от определенного для сообщений качества сервиса), прерванный при разрыве соединения. Для использования "клиента с сохранением сеанса" необходимо обеспечить реализацию интерфейса MqttPersistence. Включение реализации этого интерфейса обозначает для фабрики создания клиента, что клиентскому приложению требуется персистентная (надежная) доставка сообщений. После настройки свойств мы получаем экземпляр MQTT-клиента из фабрики MQTT-клиента. Для создания экземпляра MQTT-клиента требуется несколько параметров, в том числе уникальный идентификатор клиента (client ID), IP-адрес и порт брокера, а также дополнительный объект MqttProperties, описанный ранее.
Идентификатор клиента идентифицирует каждого клиента брокеру. В первую очередь это гарантирует надежную передачу сообщений и поддерживает состояние подписки при множественных подключениях и отключениях клиента. Важно заметить, что идентификатор каждого клиента, подключающегося в брокеру, должен быть отличен от других. Если два клиента попытаются выполнить подключение к брокеру с помощью одного и того же идентификатора клиента, предпочтение будет отдано последнему соединению, а более раннее будет принудительно отключено. Это сделано для того, чтобы обеспечить повторное подключение клиента к предыдущему соединению, которое не было полностью очищено. Идентификатор клиента может иметь длину до 23 символов.
После успешного подключения MQTT можно публиковать сообщения. Приложения выполняют публикацию через объект MQTT-клиента. Сигнатура метода для публикации сообщения - int publish(String, MqttPayload, byte, Boolean). Ниже подробно рассматриваются эти четыре параметра:
String. Тип параметра темы - строковой (string), и эта строка используется брокером для сопоставления публикации и интересов подписчиков (указываемых при помощи описанного ранее синтаксиса подписки на темы).
MqttPayload. Второй параметр - это объект MqttPayload. Объект MqttPayload содержит и данные приложения, и любые заголовки протокола для этой публикации. Предусмотрен сдвиг (offset), чтобы приложения могли определить, где в MqttPayload начинаются данные. Это обеспечивает доступ к нижележащему байтовому массиву без создания дополнительных копий после записи данных в сети. Кроме того, обеспечивается доступ для прямого манипулирования полезными данными после создания объекта и до передачи.
Byte. Третий параметр, byte, - это качество сервиса (Quality of Service, QoS) для этой публикации. У QoS три допустимых значения: 0, 1 или 2:
QoS, равное 0, означает, что публикатор и брокер пытаются выполнить однократную доставку сообщения, но не предпринимают шаги, кроме предусмотренных TCP/IP, чтобы убедиться в том, что сообщение доставлено. Этот уровень иногда называют "выстрелил и забыл", так как сообщение отправляется адресату без проверки получения.
При QoS, равном 1, доставка сообщения брокеру проверяется; однако его разрешается доставлять более одного раза.
Значение QoS, равное 2, приказывает MQTT доставлять сообщения один и только один раз.
Каждое увеличение уровня QoS приводит к дополнительной нагрузке на процессор и сеть. Выбор QoS может повлиять на общие возможности масштабирования вашего решения по обмену сообщениями, а также создает дополнительную нагрузку на клиент, связанную с хранением недоставленных сообщений. Следовательно, нужно правильно выбрать соответствующий уровень QoS для каждого опубликованного сообщения. Как правило, следует использовать более низкие значения QoS, если только не требуется более жесткая гарантия доставки сообщений. Значение QoS, указанное для сообщения, определяет качество сервиса для публикации между клиентом и брокером. Кроме того, это значение устанавливает максимальный уровень QoS, который брокер использует для доставки этого сообщения своим подписчикам.
Подписчики могут указать максимальное значение QoS для доставки сообщений на основе темы, поэтому сообщение, опубликованное с уровнем QoS 2, может быть и не доставлено подписчикам. Подписчик может запросить пониженный уровень QoS для получаемых им сообщений. Хотя может показаться странным, что публикатор не полностью управляет качеством сервиса своих сообщений, в результате увеличивается гибкость для потребителей сообщений. Когда опубликованное сообщение отправляется подписчику, брокер доставляет публикацию либо с максимальным значением QoS, указанным подписчиком во время процесса подписки, либо со значением QoS опубликованного сообщения, если оно ниже. Например, сообщение, опубликованное с QoS = 2 для подписчика, указавшего QoS = 1 для данной темы, доставляется с QoS = 1. Сообщение с QoS = 0, опубликованное для того же подписчика по этой же теме, отправляется подписчику с QoS = 0.
Boolean. Четвертый параметр, булев флаг (Boolean flag), определяет, является ли эта публикация задержанной. Задержанная публикация удерживается в брокере как последнее полученное сообщение по данной теме. Задержанные публикации позволяют следующим подписчикам получать самые последние сообщения по какой-либо теме, как только они на нее подпишутся, даже если подключение произойдет после того, как сообщение будет опубликовано. Эта возможность очень полезна для наполнения данными отображающего информацию приложения сразу после его запуска и последующего обновления этой информации при ее изменении. Если значение этого флага - false, сообщение получат только подписчики, в данный момент подписанные на эту тему.
В заключение о протоколе MQTT можно сказать, что это мощный транспортный протокол модели обмена сообщениями publish/subscribe. Он полезнее других аналогичных протоколов в тех ситуациях, когда требуются маленький клиент и невысокая нагрузка на сеть. В данной статье рассматривается процесс создания полнофункционального MQTT-публикатора.
Похожие статьи
-
Централизованный сервер как метод взаимодействия - Виды взаимодействия в Интернете вещей
Большинство интернет-вещей представляют собой самостоятельные устройства, передающие некоторую информацию в базу данных для последующей обработки и...
-
На текущий момент AMQP 1.0 официально поддерживается всеми сервисами Azure, которые являются частью шлюза соединения. Microsoft сориентировался на этом...
-
Введение - Виды взаимодействия в Интернете вещей
Интернет вещь протокол виджет В настоящее время активно развивается такое направление в области информационных технологий, как "Интернет вещей" -...
-
Интернет вещей представляет собой вычислительную сеть, имеющую Основные узлы - интернет-вещи, Серверы управления интернет-вещами, Пользовательские узлы -...
-
Несмотря на то, что к IoT Hub можно подключиться напрямую, используя протоколы HTTP или AMQP), Microsoft также предоставляет разные SDK для разных языков...
-
Использование шлюза - Виды взаимодействия в Интернете вещей
В Интернете вещей шлюз используется не только для прямой связи интернет-вещей с пользователем, но и при использовании централизованного сервера. Шлюзы...
-
Сетевыми протоколами называют протоколы первого и второго уровней, определяющих архитектуру локальной сети, в том числе ее топологию, передающую среду,...
-
При начале разработки после выбора технологического стэка необходимо определить сущности, с набором свойств, которые будут использоваться при дальнейшей...
-
С целью выбора платформы для внедрения программного модуля необходимо сравнить интеграционные платформы Интернета вещей с помощью определенных критериев....
-
Разработка интеграционных платформ началась одновременно с исследованием и развитием Интернета Вещей. Это происходило по той причине, что сама концепция...
-
С эксплуатационной точки зрения удобно рассматривать то, как устройства в IoT соединяются и "общаются" друг с другом, говоря о технических моделях...
-
Строгое определение протокола выглядит как формализованный набор правил, используемый ПК для коммуникаций. Из-за сложности коммуникаций между системами и...
-
Одним из самых важных начальных этапов при разработке ПО является выбор технологического стека, с помощью которого будет происходить разработка продукта....
-
Для реализации вышеописанных пользовательских историй опишем функциональные требования, на которые будет опираться процесс разработки. Во-первых, самый...
-
Домашнее использование чаще всего представляет из себя набор сенсоров, собирающих информацию об индивидах, которые напрямую владеют этой сетью. Это могут...
-
Для определения наиболее актуальных функциональных требований необходимо полностью рассмотреть предлагаемые в научном сообществе решения по...
-
IoT Hub новый сервис, предоставляемый в рамках набора сервисов Azure. Этот сервис предоставляет двустороннее взаимодействие между устройствами и облачной...
-
Проблема безопасности С подключением все большего количества устройств к интернету возникает больше возможных уязвимостей с точки зрения безопасности....
-
Способы взаимодействия в Интернете вещей - Виды взаимодействия в Интернете вещей
В настоящий момент можно выделить 3 основных способа взаимодействия с интернет-вещами: Прямой доступ, Доступ через шлюз, Доступ через сервер. В случае...
-
В программе присутствуют следующие основные модули: - PlatformManager - DeviceManager - ScenariosManager - ScenarioEngine - ExportManager - ImportManager...
-
Предметная область IoT (Интернет вещей) - это сеть физических объектов - устройств, транспортных средств, зданий и других вещей со встроенной...
-
Обзор протокола Multi-Touch технологий передачи данных TUIO [7] - основной кроссплатформенный протокол с открытым исходным кодом Multi-Touch передачи...
-
Как отмечалось ранее, единственным базовым протоколом семейства TCP/IP, в котором изначально предусмотрена функция обеспечения безопасности соединения и...
-
Соединение устройств и IoT Hub основано на TLS (Transport Layer Securiy, безопасность транспортного уровня). Таким образом все сообщения, посылаемые по...
-
История и основные парадигмы Следующий виток развития информационных технологий находится вне области настольных компьютеров. В парадигме Интернета Вещей...
-
Сервисы и протоколы. World Wide Web (WWW) - Интернет технологии
World Wide Web (WWW, Всемирная паутина) - это наиболее популярный вид информационных услуг Internet, основанный на архитектуре клиент-сервер. В конце...
-
В рамках работы над разработкой модуля программируемых сценариев взаимодействия была подробно изучена и описана предметная область Интернета Вещей, ее...
-
Для того, чтобы использовать симметричные алгоритмы шифрования, необходимо безопасно обменяться ключами. Протокол Диффи - Хеллмана позволяет двум и более...
-
Сетевые протоколы, используемые в сети Интернет. - Использование компьютерных сетей
Иерархия протоколов TCP/IP 5 Application level 4 Transport level 3 Internet level 2 Network interface 1 Hardware level Протоколы TCP/IP широко...
-
Протоколы, Сервисы и услуги - Сетевые технологии
Протокол, в данном случае, -- это, образно говоря, "язык", используемый компьютерами для обмена данными при работе в сети. Чтобы различные компьютеры...
-
Существуют различные методы формирования и дальнейшего представления пользовательских требований в визуальном или текстовом виде. Проанализировав...
-
Разработка требований к программному модулю При разработке программного модуля следует опираться на требования и спецификации, определенные для...
-
Windows Azure Queue: примеры использования, REST - запросы - Введение в облачные решения Microsoft
Примеры использования Рассмотрим условный пример, демонстрирующий логику использования Azure Queue в приложении (рис. 22.1): Рис. 22.1. Поставщики и...
-
Стеки протоколов Как уже упоминалось, многие разработчики не следуют точно стеку протоколов OSI. Они применяют свои стеки протоколов, близко напоминающие...
-
Взаимодействие агентов в мультиагентных системах
АННОТАЦИЯ В статье рассмотрена характеристика мультиагентных систем. Особое внимание уделяется актуальности исследования мультиагентных систем....
-
Взаимодействие задач с PVM - Администрирование параллельных процессов
В системе PVM каждая задача, запущенная на некотором процессоре, идентифицируется целым числом, которое называется идентификатором задачи (TID) и по...
-
До появления протоколов SMTP и POP 3 для работы с электронной почтой использовался протокол UUCP (Unix to Unix Copy Program) - программа копирования с...
-
Протокол POP (Post Office Protocol) - Электронная почта
Протокол обмена почтовой информацией POP предназначен для разбора почты из почтовых ящиков пользователей на их рабочие места при помощи...
-
Диаграмма взаимодействия, Диаграммы переходов состояний - Основы технологии программирования
На основе анализа исходных данных диаграмма взаимодействия имеет вид: Рис. 1 Диаграмма взаимодействия При поступлении грузов п Редставитель...
-
Протокол(Protocol) Строго определенная процедура и формат сообщений, допустимые для коммуникаций между двумя или более системами через общую среду...
Протокол MQTT - Виды взаимодействия в Интернете вещей