MQTT или HTTP: какой протокол лучше для IoT?

mqtt vs. http: which one is better for iotHTTP один из самых широко используемых протоколов. Но за последние несколько лет вместе с развитием Internet of Things возросла популярность MQTT протокола. Разработчикам приходится выбирать между HTTP и MQTT, когда речь идет об IoT разработке.

Проектирование и отправка сообщений

MQTT ориентирован на данные, в то время как HTTP – на документы. HTTP основан на технологии  «клиент-сервер» и  обмен сообщениями происходит по схеме «запрос-ответ». Таким образом, HTTP не всегда оптимизирован для мобильных устройств.

Главными преимуществами MQTT протокола в данном случае являются его легковесность (MQTT передает данные как массив байтов) и использование схемы «издатель-подписчик» при обмене сообщениями. MQTT протокол подходит для устройств с ограниченными ресурсами.

Кроме того, схема «издатель-подписчик» позволяет всем клиентам существовать независимо друг от друга. Если один из клиентов вышел из строя, вся система продолжит работать, что повышает надежность системы в целом.

Скорость и доставка

Согласно измерениям в 3G сетях, пропускная способность MQTT в 93 раза выше, чем HTTP.

Помимо этого, у MQTT высокие гарантии доставки сообщения. Существует 3 уровня качества обслуживания:

– не более одного раза: сообщение доставляется не более одного раза; в противном случае оно будет потеряно. Подтверждение приема сообщения не отправляется. Сообщение может быть потеряно в случае отключения клиента или сбоя сервера.

– не менее одного раза: сообщение доставляется по крайней мере один раз. Оно может быть доставлено несколько раз в случае задержки отправки подтверждения, а также перезапуска сеанса связи вследствие сбоя.

– только один раз: на этом уровне доставки сообщение доставляется только один раз. Доставка гарантируется, однако принимающее приложение не получает повторяющиеся сообщения.

MQTT также предоставляет пользователям опции «Последняя воля и завещание» и «Сохраненное сообщение».  Первая позволяет задать сообщение, которое получат клиенты от брокера в случае непредвиденного разрыва соединения. «Сохраненное сообщение» позволяет только что подписавшемуся клиенту получить последнюю публикацию.

HTTP протокол таких особенностей не имеет.

Сложность и размер сообщений

MQTT имеет достаточно короткие спецификации:  для разработчиков важны только CONNECT, PUBLISH, SUBSCRIBE, UNSUBSCRIBE и DISCONNECT.  Спецификации HTTP намного длиннее.

Заголовок сообщение MQTT короткий, а наименьший размер пакета сообщений составляет 2 байта. Использование текстового формата сообщений в HTTP протоколе позволяет создавать более длинные заголовки и сообщения, которые понятны человеку. Это помогает избавиться от ошибок, но в то же время это излишне для устройств с ограниченными ресурсами.

 Вывод

MQTT протокол легок в использовании и прекрасно подходит в тех случаях, когда соединение с интернетом может обрываться и важны пропускная способность, время ответа и сохранение заряда батареи. MQTT  – идеальное решение для IoT разработки.

Leave a Reply

Your email address will not be published. Required fields are marked *