Использовать MQTT или удаленный MySQL для получения данных на сервере? - PullRequest
0 голосов
/ 02 февраля 2020

В настоящее время я настроил несколько Raspberry Pis в разных местах, которые собирают данные (температура, влажность) каждые 5 секунд. Для визуализации этих данных мне интересно, лучше ли отправлять эти данные через MQTT на VPS и сохранять их в локальной базе данных MySQL или просто использовать удаленное соединение MySQL и вставлять данные непосредственно в базу данных MySQL , В настоящее время я не вижу никаких преимуществ MQTT. У тебя есть другие мнения?

Спасибо и привет, Джонас.

1 Ответ

1 голос
/ 02 февраля 2020

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

  • Доставка сообщений (особенно по ссылкам низкого качества) - с MQTT (и QOS> 0) после того, как сообщение было принято, доставка гарантируется (в определенных пределах!); клиент / брокер будет решать проблемы с сетью и т.д. c. Обратите внимание, что некоторые клиенты MQTT не поддерживают автономную буферизацию (например, Paho. Net client ), но вы можете решить эту проблему, запустив посредник на каждой установке Pi в качестве моста. Если вы используете MySQL, вам придется самостоятельно решать проблемы с подключением (и обрабатывать постоянство данных во время отключений сети, если это важно для вас).
  • Пропускная способность - сообщения MQTT, вероятно, будут меньше (это зависит о том, как вы упаковываете свои сообщения, но протокол добавляет очень мало накладных расходов).
  • Безопасность - MySQL рекомендации по безопасности утверждают, что порт MySQL "не должен быть доступен с ненадежных хостов ». Любой продукт может иметь проблемы с безопасностью, но MySQL является гораздо более крупной и более сложной системой, чем брокер MQTT, поэтому имеет большую поверхность атаки.
  • Свободная связь - подключение напрямую к базе данных с удаленных узлов блокирует вас эта база данных и схема. Использование MQTT позволяет вам реструктурировать свой бэкэнд (в том числе перейти к, скажем, PostgreSQL) без внесения каких-либо изменений в клиент (это важно, если у вас много удаленных устройств или вы не можете удаленно обновить их).
  • Модель Pub / Sub - модель публикации / подписки, используемая MQTT, предлагает ряд преимуществ, таких как подписка на живые данные из вашей тестовой системы.
  • Двунаправленная - если вам нужно, например, управлять реле на удаленном устройстве можно легко отправить ему сообщение с сервера (это также можно использовать для выполнения таких операций, как журналы запросов для диагностики).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...