Ключевые особенности, сделавшие MQTT-брокер самым востребованным протоколом интернета вещей.
MQTT — это легковесный, простой в использовании и легко встраиваемый в любую систему протокол обмена информацией. Обычно MQTT работает через TCP/IP, однако его может поддерживать любой сетевой протокол, способный без потерь обеспечить упорядоченные двунаправленные соединения. MQTT разработан для подключений к удаленным устройствам с низкой пропускной способностью.
Расскажем, как MQTT упростил интеграцию оборудования в сеть промышленного интернета вещей (IIoT) и в чем его отличия от других протоколов, используемых на производстве.
Как системы управления производством собирают данные с оборудования
Для управления производственными процессами и мониторинга оборудования в промышленности используются несколько систем — SCADA, MES, ERP и другие. Все они собирают, обрабатывают и обмениваются данными, но предназначены для разных пользователей. Оператор на производстве использует SCADA, начальник цеха управляет процессами в MES, а директор завода анализирует информацию в ERP.
Все упомянутые системы независимо друг от друга устанавливают прямое подключение с каждым устройством и запрашивают у него данные. Для этого они используют промышленные протоколы, например, Modbus/TCP или Ethernet/IP, работающие по системе ведущий-ведомый. Таким образом, несколько систем, параллельно получающие данные с одного и того же промышленного оборудования, создают высокую нагрузку на сеть предприятия. Обеспечение бесперебойной работы такой сети требует дополнительных усилий системных администраторов. Кроме того, все контроллеры, шлюзы и серверы необходимо устанавливать, настраивать и с определенной периодичностью обновлять.
Как работает
Изначально протокол MQTT был разработан в 1999 году для обмена данными в системе SCADA в нефтегазовой отрасли. Он должен был контролировать состояние нефтепроводов в режиме реального времени и работать на устройствах с малым объемом памяти, небольшой вычислительной мощностью и ограниченным временем автономной работы.
Начиная с 2010-х годов популярность MQTT стабильно росла, в том числе и благодаря тому, что он способен пересылать данные через незащищенные сети с низкой пропускной способностью и нестабильным соединением. Сейчас это наиболее востребованный протокол с открытым исходным кодом для интернета вещей.
MQTT определяет два типа сетевых объектов: брокер и клиент. Брокер — это центральный узел для обмена MQTT-сообщениями между устройствами и реестрами. Обмен данными происходит только через брокер. Он отвечает за получение и обработку сообщений, а также контролирует их доставку MQTT-клиентам (устройствам или реестрам), обеспечивая необходимый уровень качества обслуживания. К устройствам относятся датчики, PLC-контроллеры, серверы и приложения.
Вместо того чтобы устанавливать несколько прямых соединений между приложениями и устройствами, как это делают протоколы Modbus/TCP и Ethernet/IP, MQTT использует брокера как конечную точку для отправки данных со всех устройств и приложений. Упрощенно говоря, сервер работает как почтовое отделение, аккумулируя и пересылая сообщения между клиентами. Такая модель называется издатель-подписчик. Несколько клиентов могут получать определенное сообщение от брокера и наоборот — несколько издателей могут отправлять свои данные одному подписчику.
Таким образом, MQTT создает легко масштабируемую архитектуру «многие-к-многим» для промышленных приложений и IIoT, которая применяется в самых разных отраслях — от автопрома до энергетики и телекоммуникаций.
Самый наглядный пример использования протокола — Facebook Messenger. MQTT доставляет миллионы сообщений за миллисекунды, несмотря на разное качество интернет-соединения в разных частях света. Кроме того, протокол по минимуму расходует заряд батареи смартфона.
Возможности
Протокол обеспечивает двунаправленный обмен сообщениями между оборудованием, системами управления производством и облачными сервисами. Потенциально каждая единица оборудования и все системы управления производством, включая SCADA, MES и ERP, способны использовать MQTT для обмена сообщениями.
Кластер MQTT-брокеров, развернутый в облачном ЦОДе, может отправлять все данные, получаемые с каждого отдельного предприятия,, в озера данных, сервисы аналитики и машинного обучения. Кроме того, облачный брокер способен отправлять команды и обновленные данные на производство и даже на конкретное заводское устройство.
Решение проблем с обрывом связи
По многим причинам соединение между брокером и клиентом может быть разорвано. Есть несколько вариантов решения этой проблемы.
Самый популярный способ — использование метода с промежуточным хранением. Например, системы SCADA, которые управляют заводским оборудованием, продолжат сбор данных до тех пор, пока не будет возобновлено соединение с MQTT-брокером. Следует отметить, что при возобновлении соединения временные метки всех сохраненных данных останутся неизменными.
Другой способ — использование MQTT-брокера резервного копирования. При потере связи с основным брокером подключенные узлы автоматически переключаются на резервный. Соединение, как правило, настраивается через приложение, например, систему SCADA, которая поддерживает эту функцию.
Еще один способ — использование кластеризации. Такой вариант предназначен для приложений, которые не могут позволить себе потерю данных. Для этого несколько брокеров MQTT объединяются в кластер. Все брокеры знают друг о друге и обмениваются сообщениями в кластере. Когда соединение потеряно, издатели и подписчики данных беспрепятственно перенаправляют данные другому брокеру без потерь.
Безопасность
По умолчанию MQTT работает через протокол TCP/IP и никак не обеспечивает безопасность. Для защиты передаваемых данных необходимо использовать TLS-протокол, который обеспечивает шифрование и аутентификацию.
Yandex IoT Core
Yandex IoT Core — это отказоустойчивый масштабируемый MQTT-брокер. Кроме агрегации данных, он может обрабатывать их при помощи сервисов Yandex.Cloud. Важно, что Yandex IoT Core способен обрабатывать неограниченное количество подключений и неограниченные объёмы данных.
Сервис является мультитенантным, то есть все пользователи работают с одним и тем же экземпляром сервиса. Такой подход упрощает пользователям работу с сервисом и обеспечивает масштабирование и отказоустойчивость для подключения любого количества устройств и обработки данных, не ограниченных по объему и скорости передачи. Чтобы оперативно реагировать на изменение нагрузки, Yandex IoT Core использует механизмы резервирования и гибкого управления ресурсами.
У Yandex IoT Core сложная архитектура и логика работы. Благодаря этому, сервис способен выдержать даже крайне маловероятную потерю двух из трёх зон доступности и продолжить работу.
Причём логика скрыта от пользователя «под капотом» сервиса, а снаружи он выглядит просто — так, как будто работа идет с единственным MQTT-брокером.