Сделает ли протокол MQTT промышленный IoT лучше?

Эндрю Томас, основатель компании Skkynet запускает серию статей о промышленном Интернете Вещей. Представляем вам седьмую публикацию.

Часть 7. Передача данных в рамках промышленного Интернета Вещей

MQTT (message queuing telemetry transport / Поочередная отправка сообщений с телеметрией) – это протокол для обмена сообщениями, в основе которого лежит механизм публикации / подписки. Изначально он создавался для устройств, которые не обладали хорошими вычислительными ресурсами и передавали данные по сетям с низкой пропускной способностью. Его уверенно позиционируют как протокол Интернета Вещей, поскольку он нетребователен к ресурсам, достаточно прост в использовании и способен отправлять push-сообщения.

С помощью протокола MQTT источники данных, в качестве которых зачастую выступают электронные устройства, получают возможность подключаться к серверу, именуемому брокером, и публиковать на нем свои данные. Любое устройство или программа, которые хотят получать данные, могут подписаться на соответствующий канал. Клиенты MQTT могут одновременно как публиковать данные, так и быть на них подписанными. Брокер никак не использует сами данные из сообщений, а просто переправляет их от издателей к подписчикам.

Многие преимущества подхода публикации / подписки делает его привлекательным для проектов Интернета Вещей обычного назначения. В сравнении с архитектурой клиент-сервер подход, отправляющий push-сообщения, является более безопасным по своей сути, поскольку при установлении исходящий соединений устройствам не требуется открывать порты брандмауэра. А также благодаря существованию централизованного брокера можно организовывать соединение “многие ко многим”, позволяя нескольким подписчикам подключаться сразу к различным источникам данных. Складывается впечатление, что протокол MQTT является решением трудностей, которые связаны с установлением соединения и обеспечением безопасности - о них говорилось в предыдущих публикациях.

Однако, несмотря на все эти преимущества протокола MQTT, он обладает тремя ощутимыми недостатками, которые могут поставить под сомнение его пригодность для многих систем и проектов промышленного Интернета Вещей.

MQTT – это протокол для обмена сообщениями, а не данными

Брокеры MQTT не учитывают ту информацию, которая содержится в сообщениях. Такой подход может стать проблемой для промышленных систем, которые общаются с помощью технологий Интернета Вещей. Представляем вам несколько причин:

1) Маршрутизация брокера не зависит от того, что содержится в сообщениях. Он просто передает то, что получает. Даже если значение параметра не изменилось, сообщение о нем все равно будет отправлено. При этом в сети не предусмотрен механизм, предотвращающий зацикливание передачи данных, поэтому ранее полученные сообщения могут отправляться повторно и так по кругу – так будут затрачиваться ресурс сети и заниматься пропускная способность.

2) Брокер не различает сообщения, которые содержат новые или ранее переданные данные, в таком случае это позволило бы проводить обмен информацией более последовательно. Единственный альтернативный вариант, как можно добиться подобной  последовательности – отправлять всю информацию каждому клиенту, разумеется, при таком подходе нагрузка на пропускную способность сети будет максимальной.

3) Поскольку брокер не осуществляет просмотр данных в сообщении, он нигде не фиксирует сведения о том, что именно он хранит. Поэтому клиент при подключении к брокеру не может просто просмотреть сохраненный в нем набор данных. Чтобы получить эти данные, он должен обладать списком тем брокера или конкретного источника данных. Только зная тему, можно установить соединение. При таком подходе настройка каждого клиента получается двойной. Если система небольшая, то это вряд ли будет заметной проблемой, одно при масштабировании она будет все становиться более ощутимой.

4) Клиенты не узнают о том, что публикуемые данные уже стали недействительными. В промышленной системе необходимо фиксировать факт того, что источник данных перестал передавать достоверные данные вне зависимости от того, произошел ли сбой в сети или отказ оборудования. Брокеры MQTT тоже не могут быть поставлены в известность об этом. В идеале, когда данным от того или иного источника больше нельзя верить, брокеру MQTT следовало бы отправить сообщение об этом за него. К сожалению, ввиду того, что формат отправляемых сообщений остается неизвестным для брокера, они не знают, как правильно его формировать. Ввиду этой трудности, целесообразность использования в производственной среде исключительно протокола MQTT вызывает сомнения.

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

Нет подходящего уровня качества обслуживания

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

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

    Яндекс.Метрика