Данные AWS Stream из Интернета вещей в графики панели мониторинга

Нам нужно получить данные от 1000 устройств IOT (температура, давление, число оборотов в минуту и ​​т. д., всего более 50 параметров) и отобразить их на приборной панели без особой обработки (просто проверяя, находятся ли числа в диапазоне, иначе вызовите тревогу), но в режиме реального времени. Я просмотрел и протестировал множество ресурсов блога aws, таких как Приложение Kinesis Storm ClickStream

однако я думаю, что использование storm является излишним для такой простой задачи. Все, что я хочу сделать, это сохранить данные в БД и показать графики (30 минут, 1 час или пользовательская дата). Это то, что я понял до сих пор

Device -> AWS IOT(mqtt) -> Kinesis -> x -> dynamoDB -> Presenter Web APP (Laravel) Возможно, мне придется использовать Node.js и Redis Pub/Sub, как указано в примере с ClickStream, для обновления графиков и предупреждений в реальном времени.

Я не хочу использовать Apache Storm, потому что он на Java и имеет кривую обучения (и не смог найти хорошего ресурса). Я знаю, что могу использовать Lambda, но не уверен, как это будет масштабироваться.

  • есть мысли по решению?
  • У AWS нет KCL для PHP, альтернатив или решений? потому что я знаком с PHP, но не с Java.

person Junaid    schedule 30.05.2016    source источник


Ответы (2)


Apache Storm — это распределенная среда обработки событий. В вашем случае использования вы, похоже, не выполняете никаких вычислений для событий. По сути, ваше приложение выполняет три задачи:

  1. Загрузить данные в систему.
  2. Прочитайте данные с периода X по Y.
  3. Рисуйте графики в веб-интерфейсе.

За прием данных отвечает AWS-IOT. Первый шаг, который вы должны сделать, — создать тему SNS и опубликовать все данные IoT в темах SNS. Здесь вы получаете возможность создавать одну тему для каждого типа данных (например, температура, давление) и присоединять потребительские очереди SQS. к темам для накопления сообщений. Для постоянной БД одним потребителем может быть таблица DynamoDB, другим потребителем может быть Lambda, которая выполняет некоторую фильтрацию и преобразование данных, а также обновляет ваш кеш. Если вам нужно выполнить какие-либо OLAP/аналитические запросы к данным, рассмотрите возможность использования Redshift в качестве одного из потребителей. Вам нужно будет ввести конкретные требования, чтобы завершить свой дизайн.

person Adi    schedule 02.06.2016
comment
спасибо @Adi, так что вы говорите, что я полностью удаляю кинезис и использую «Устройство (я) -> AWS IOT (mqtt) -> SNS -> SQS -> Lambda -> DynamoDB». вы также сказали, что одним потребителем может быть DynamoDB, что это значит? Dynamo может сохранять данные в какую-либо таблицу напрямую или мне понадобится лямбда? - person Junaid; 03.06.2016
comment
Kinesis и SQS — это просто два разных решения для организации очередей, которые имеют несколько разные варианты использования. Kinesis лучше всего подходит там, где вам нужна надежность данных, а прием осуществляется в виде потока данных. Я не буду вдаваться в дискуссию о SQS и Kinesis, вы можете оценить это сами. одним потребителем может быть DynamoDB: когда вы публикуете сообщения в любой теме SNS, у вас может быть любое количество потребителей для прослушивания этой темы. Следовательно, он ведет себя как доставка сообщений 1...N. Подробнее о социальных сетях. - person Adi; 05.06.2016

Рассматривали ли вы возможность направления данных в AWS IoT Analytics после получения сообщения mqtt в IoT Core? Таким образом, вы можете избавиться от всей тяжелой работы с инфраструктурой с помощью kinesis, Dynamo и вашего уровня представления.

AWS IoT Analytics предоставляет возможности приема, подготовки данных и запросов. После сохранения данных в хранилище обработанных данных их можно визуализировать с помощью AWS QuickSight.

person Jurgen    schedule 23.06.2018
comment
да, это тоже был мой первый вариант. но аппаратное обеспечение не могло поддерживать требования к шифрованию. - person Junaid; 01.07.2018
comment
Не могли бы вы немного поподробнее рассказать об этом? Вместо того, чтобы передавать данные из AWS IoT в Kinesis (Устройство -> AWS IOT(mqtt) -> Kinesis), вы можете просто выбрать IoT Analytics в качестве цели следующим образом: Устройство -> AWS IOT (mqtt) -> IoT Analytics -› AWS QuickSight. См. docs.aws.amazon.com/iot/latest/developerguide. / для более подробной информации. - person Jurgen; 02.07.2018
comment
извините, я имел в виду, что не пошел по этому пути, потому что устройства не могли отправлять данные в AWS IOT в первую очередь (требование шифрования в IOT), поэтому мне пришлось сделать Device -> сервер mqtt -> kinesis. - person Junaid; 11.07.2018