Приветствую всех вОблако Tencent + сообщество, получить больше крупной технической практики Tencent по галантерее ~
В этой статье мы создадим полную основу и разностороннее понимание некоторых технических проблем IoT или систем потоковой обработки, чтобы читатели могли принимать обоснованные решения или задавать обоснованные вопросы при планировании систем IoT. Мы намерены создать многогранную основу для людей, которые начинают задумываться о потоковой обработке и IoT, независимо от того, действительно ли вам нужен потоковый процессор или нет, мы углубимся в потоковую обработку (ядро IoT), а затем обсудим Лямбда-архитектура и дайте некоторые общие мысли о том, что может делать датчик.
Фреймворк с открытым исходным кодом для потоковой обработки
Платформа обработки потока событий подобна швейцарскому армейскому ножу: вы можете заставить данные в движении в потоке данных делать практически все, что захотите.
Самый простой способ понять архитектуру ESP — представить ее как три уровня или три функции — ввод, обработка и вывод.
Входной слой будет принимать практически любой тип потоковых данных с временной привязкой, и часто существует несколько входных потоков. В основном процессоре ESP происходят различные действия, которые называются программами или операциями. Результаты этих программ передаются на некий интерфейс подписчика, который может отправлять оповещения или создавать машины для автоматизации действий через человеко-машинный интерфейс, и передавать данные в службы хранения данных, такие как Fast и Forever.
Платформы потоковой обработки действительно могут получать потоки данных напрямую, но имейте в виду, что они не очень хороши в сохранении данных, которые могут быть случайно потеряны, поэтому вам все равно понадобится прием данных, такой как Kafka, который может вернуться и воспроизвести потерянные данные. В ближайшем будущем многие потоковые процессоры могут решить эту проблему, и тогда нужно будет пересмотреть необходимость на стороне Kafka.
Требования к потоковой обработке
Конвективные потоковые процессоры часто имеют следующие требования:
- высокоскоростной: зависит от конкретных потребностей бизнеса, обычно можно собирать и обрабатывать миллионы событий в секунду.
- Легко расширить: Все должно работать на распределенном кластере.
- Отказоустойчивость: Это не то же самое, что гарантировать отсутствие потери данных.
- определить обработку: Есть два подхода к этому: каждое событие обрабатывается хотя бы один раз, и каждое событие обрабатывается ровно один раз. Но критерий «ровно один раз» трудно гарантировать. Это глубокая тема, которую мы обсудим позже.
- Программа, необходимая для выполнения вашего приложения
Что может программа ESP?
Возможность выполнять очистку данных на стороне приема (аналогично своего рода мини-MDM) является истинным выражением его мощности. Потоки данных реплицируются несколько раз после очистки данных, так что каждый из одних и тех же потоков данных можно использовать одновременно в разных анализаторах, не ставя эти программы в очередь для предыдущих анализаторов для завершения их анализа. Ниже приведена диаграмма примера медицинского бизнеса, описывающая способ работы, упомянутый в предыдущей главе, иллюстрирующий, что несколько потоков данных дополняются статическими данными и одновременно обрабатываются различными типами логики. Каждый блок представляет собой отдельную программу, которая должна быть написана вами в ESP.
Существует множество различных типов логики, которые можно применять с помощью этих программ ESP, в том числе:
- рассчитать
- Дублируйте, установите несколько путей обработки - каждый с разным временем хранения, например, 5-15 минут.
- статистика
- считать
- Фильтрация, позволяющая сохранять из потока данных только полезные данные и отбрасывать остальные, значительно сокращая место для хранения.
- функция (для преобразования)
- Объединение нескольких потоков в один
- Уведомления по электронной почте, текстовые или мультимедийные
- Паттерн (EOI конкретного интересующего события, для обнаружения)
- Процесс (для применения продвинутых прогностических моделей)
- Текстовый контент для обнаружения такой информации, как отслеживание шаблонов твитов.
- Текстовое настроение для мониторинга положительных или отрицательных настроений в потоках социальных сетей.
И пакеты с открытым исходным кодом, и проприетарные пакеты имеют некоторые различия в том, что они могут делать, поэтому вам следует сверять содержимое этих пакетов с тем, что вам нужно сделать.
Опция с открытым исходным кодом для потоковой обработки
Основные варианты фреймворка с открытым исходным кодом (все Apache) следующие:
Samza: Фреймворк распределенной потоковой обработки. Он использует Kafka для обмена сообщениями и YARN для отказоустойчивости, изоляции процессора, безопасности и управления ресурсами.
NiFi: Это довольно молодой проект с открытым исходным кодом, который все еще находится в разработке. Что отличает его от других проектов, так это то, что он имеет удобный графический интерфейс с функцией перетаскивания и что мы можем легко настроить его для конкретных нужд.
Storm: Хорошо протестированный потоковый процессор на основе событий. Первоначально он был разработан Twitter.
SPARK Streaming: SPARK Streaming — один из четырех компонентов SPARK, первый, объединяющий пакетную и потоковую обработку на единой платформе корпоративного уровня.
SPARK Streaming и Storm: наиболее распространенные пакеты программного обеспечения с открытым исходным кодом
SPARK существует уже несколько лет, но за последний год его использование значительно увеличилось, и теперь он заменил Hadoop/MapReduce в большинстве новых проектов, а многие существующие системы Hadoop/MapReduce также перешли на Spark. Развитие SPARK движется к тому, чтобы стать единственным технологическим стеком, необходимым для приложений IoT.
SPARK состоит из пяти компонентов, каждый из которых поддерживает Scala, Java, Python и R.
- SPARK: приложение, лежащее в основе системы, представляет собой пакетный движок, совместимый с HDFS и другими базами данных NoSQL. Он в 10-100 раз быстрее, чем Hadoop/MapReduce, поэтому он очень популярен.
- ML.lib: встроенная библиотека мощных алгоритмов обработки данных и машинного обучения.
- SPARK SQL: используется для прямой поддержки запросов SQL.
- SPARK Streaming: SPARK интегрированный механизм потоковой обработки.
- GraphX: Мощный движок графовой базы данных, который можно использовать вне потоковых приложений.
Напротив, Storm — это чистый обработчик потока событий. Разница между Storm и SPARK Streaming невелика, но то, как они разбивают входящие данные, сильно отличается. Это еще одна тема, обсуждаемая позже.
Если вы уже знакомы с секционированием данных и уверены, что это не повредит вашему приложению, то SPARK / SPARK Streaming с открытым исходным кодом — это то, что вам нужно.
Лямбда-архитектура: скорость плюс безопасность
Стандартная эталонная архитектура для приложений обработки потоков IoT называетсяЛямбда Архитектура, архитектура содержитСлой скоростииУровень безопасности.
Входящий поток данных реплицируется приложением приема данных (Kafka) и отправляется в двух направлениях: одно — на уровень безопасности, а другое — на платформу обработки потоков (SPARK Streaming или Storm). Это гарантирует восстановление потерянных данных, гарантируя, что все данные были обработаны хотя бы один раз.
Запросы на стороне потоковой обработки могут быть потоками данных, которые извлекают статические данные для подачи в потоковый процессор, или могут использоваться для последующих событий через любое количество носителей (включая электронную почту, SMS, клиентские приложения и информационные панели). Потребители отправляют сообщения, предупреждения или данные. Оповещения также генерируются локально в потоковом процессоре.
Запросы к хранилищу уровня безопасности будут использоваться пакетами для создания дальнейших аналитических процессов и встроенных в потоковые процессоры или для ответа на специальные запросы, такие как разработка новых моделей прогнозирования.
Вам действительно нужен потоковый процессор?
Вы должны проектировать свою платформу IoT с учетом необходимости использования потоковых процессоров. В некоторых случаях, когда требуется лишь небольшое количество или разнообразие датчиков, может быть лучше не учитывать сложность системы самого потокового процессора.
Если период «реального времени» длительный
Пакетная обработка данных датчиков вполне оправдана в некоторых случаях, когда взаимодействия в реальном времени имеют значительную продолжительность, например, при информировании конечных пользователей о том, что любые новые данные могут появляться только один раз в день или даже реже.
С точки зрения архитектуры данные датчика будут поступать в приложение для сбора данных (Kafka) и отправляться непосредственно в хранилище. С помощью обычной пакетной программы сегодняшние данные будут проанализированы за одну ночь, а любые важные сигналы, которые необходимо отправить пользователю, будут отправлены на следующий день.
Пакетная обработка может быть приемлемым вариантом, когда «реальное время» будет составлять 24 часа или более, а в некоторых случаях максимум до 12 часов. Если время, необходимое для взаимодействия в реальном времени, короче, потоковая обработка может быть более привлекательным вариантом.
Можно настроить потоковую обработку для оценки данных за любой период времени (включая дни, недели и даже месяцы), но в какой-то момент ценность упрощения системы перевешивает ценность внедрения потоковой обработки.
Четыре применения сенсорных данных
Существует четыре широких области применения данных датчиков. Это также может послужить ориентиром для принятия решения о введении потоковой обработки. Вот несколько примеров.
Использовать напрямую: например, считывая GPS-координаты непосредственно с датчика, а затем размещая координаты на карте, вы можете легко создать приложение «Где ваш телефон». Приложению также может потребоваться ввести статические данные о пользователе (например, необходимо знать адрес проживания пользователя, чтобы ограничить масштаб отображаемой карты), что можно сделать вне потокового процессора посредством стандартного объединения таблиц. выполняться в потоковом процессоре.
экспертное правило: Без науки о данных можно написать правила, которые придают смысл входящим потокам данных. Например, можно разработать экспертное правило, которое будет сочетаться со статическими данными пациента для вызова медицинской помощи, когда температура пациента достигнет 103°.
прогнозная аналитика: следующие два приложения относятся к области науки о данных. Исследователи данных используют методы предиктивной аналитики для поиска значимой информации в данных.
неконтролируемое обучение: в прогнозной аналитике неконтролируемое обучение означает применение таких методов, как кластеризация и сегментация, которые не требуют исторических данных, указывающих на конкретный результат. Например, акселерометр в FitBit позволяет легко увидеть, стали ли вы более активными или менее активными, чем в последнее время, или относительно активны или неактивны по сравнению с некоторыми другими пользователями FitBit, которых вы сравниваете. Предоставление некоторого контента процессу чтения может потребовать внесения статических данных о пользователе.
Преимущество неконтролируемого обучения в том, что его можно развернуть практически сразу после размещения датчиков, ведь на построение модели с обучающими данными уходит не так много времени.
Заданный порог для отправки предупреждений потребует помощи некоторых неконтролируемых методов моделирования. Например, период изменения для сообщения, соответствующего стандарту, может превышать 20 % в день или стандартное отклонение аналогичной группы пользователей.
Эти алгоритмы уточняются специалистами по данным на основе пакетов данных и экспортируются в потоковые процессоры для применения к потокам данных в виде формул.
контролируемое обучение: Разработайте прогностическую модель, используя обучающие данные, где результат известен. Это, в свою очередь, требует некоторых образцов с обнаруженным поведением и текущим состоянием, а также некоторых образцов с неизвестным состоянием.
Например, мы можем записать температуру, вибрацию и потребляемую мощность двигателя, а также узнать, вышел ли двигатель из строя в течение 12 часов после измерения. Имея достаточно обучающих данных, мы можем разработать прогностическую модель, которая предсказывает возможные препятствия на 12 часов вперед.
Модель, представленная в виде алгебраической формулы (несколько строк кода C, Java, Python или R), затем экспортируется в потоковый процессор для оценки данных по мере обработки потока, автоматически отправляя оповещения, когда оценки указывают на надвигающуюся опасность. отказ.
Существуют преимущества использования сложных моделей прогнозирования в потоковой обработке. Однако, если событие, которое вы хотите предсказать, является редким, например, небольшой процент всех измерений, или если событие происходит в течение длительного времени (длительное ожидание сбора достаточного количества обучающих данных), сбор достаточного количества обучающих данных может быть проблема.
вопросы и ответы
Каковы сценарии применения IoT на основе облачных вычислений?
Связанное Чтение
Все, что вам нужно для запуска проекта IoT: глава 1
Все, что вам нужно для запуска проекта IoT: глава 3
Эта статья была разрешена автором для публикации сообщества Tencent Cloud +, исходная ссылка: https://cloud.tencent.com/developer/article/1098214?fromSource=waitui.