Потоковые сервисы
При возрастающем числе источников, предоставляющих потоковые данные в реальном времени, возможность приложений принимать и немедленно отображать эти данные становится все более важной. Традиционный подход, при котором имеется задержка, связанная с хранением данных событий в классе объектов многопользовательской базы геоданных и периодическим обращением клиентов к сервису объектов для получения данных для отображения, становится проблематичным – особенно при работе с потоками данных большого объема.
Такой подход требует изменений. Необходимо обеспечить непрерывность потока данных в виде архивирования, параллельно с передачей данных событий клиентам. Ответом Esri является новый тип сервиса ArcGIS for Server – потоковый сервис.
Что такое потоковый сервис?
Потоковый сервис является новым типом сервиса ArcGIS for Server , который придаёт особое значение низко латентному распространению в реальном времени данных для потоков данных клиент/сервер. Клиенты, подключившиеся к потоковому сервису, начинают получать данные сразу после подписки на сервис. Клиенты могут задавать и перенастраивать пространственные и атрибутивные ограничения без отключения и повторного подключения к сервису.
Для использования потоковых сервисов необходимо лицензировать и установить в ГИС-среде дополнительный модуль ArcGIS GeoEvent for Server . В первом выпуске, потоковый сервис был включен в веб-карты ArcGIS Online и Portal for ArcGIS, а также работал в клиентских приложениях, разработанных с помощью ArcGIS API for JavaScript. В последующих выпусках появится поддержка различных клиентских подписок.
Потоковые сервисы используют технологию WebSocket, которая поддерживает полнодуплексный двунаправленный обмен данными. Это позволяет клиентам указывать, какие данные им необходимо получить, без отключения и повторного подключения к сервису. Клиенты могут фильтровать данные потокового сервиса с помощью пространственных или атрибутивных условий.
Подключение к потоковому сервису для получения данных в реальном времени позволяет отделить необходимость немедленного отображения событий от необходимости хранения данных в базе. Настроив дополнительный модуль GeoEvent на передачу данных событий через потоковый сервис, вы получите возможность сохранения данных событий в корпоративном реляционном хранилище данных или в хранилище больших пространственно-временных данных, но для визуализации данных это не требуется.
На рисунке ниже показано сравнение традиционного способа получения, обработки и использования данных объектов с получением и передачей данных в реальном времени с помощью потоковых сервисов.
Обратите внимание, что ранее, до появления потоковых сервисов, ГИС-данные в реальном времени сначала записывались в класс объектов, что требовало наличия многопользовательской базы данных. Клиентские приложения, ожидающие данные, должны были периодически обращаться к сервису объектов, для получения новых и обновленных объектов.
В нижней части рисунка показано, как потоковые сервисы позволяют получать ГИС-данные в реальном времени и сразу направлять их к клиентам через WebSocket.
Публикация потокового сервиса
Потоковые сервисы создаются и публикуются в GeoEvent Manager с помощью отправки объектов в выходной коннектор потокового сервиса.
При настройке отправки объектов в выходной коннектор потокового сервиса необходимо задать зарегистрированное подключение к ArcGIS Server по умолчанию , папку сервисов и потоковый сервис, которому выходной коннектор будет отправлять данные событий. Вы можете выбрать имеющийся потоковый сервис, либо опубликовать новый. После настройки необходимо включить выходные данные в сервис GeoEvent, так же, как и любые другие данные.
Примечание:
Потоковый сервис можно опубликовать только с использованием зарегистрированного подключения ArcGIS Server по умолчанию .
Обратитесь к учебному руководству по потоковым сервисам, доступному в руководствах по GeoEvent , чтобы получить более подробные сведения о создании и публикации потоковых сервисов в дополнительном модуле GeoEvent.
Потоковые сервисы в ArcGIS REST Services Directory
Потоковые сервисы перечислены в ArcGIS REST Services Directory наряду с другими сервисами ArcGIS for Server . Чтобы увидеть свойства потокового сервиса, его следует щелкнуть. Внизу страницы потокового сервиса, в ArcGIS REST Services Directory, имеются ссылки для вещания и получения данных событий от потокового сервиса.
Щелкните Вещание , чтобы открыть веб-страницу, с которой вы можете войти в представление Esri Feature JSON одного или нескольких объектов и отправить их клиентам, подключенным к потоковому сервису.
Щелкните Подписаться , чтобы открыть веб-страницу, на которой можно подключиться к потоковому сервису для просмотра передаваемых объектов. Если у вас имеется поток данных большого объема, форма на этой странице быстро станет перегруженной; используйте эту страницу в течение короткого времени, чтобы только убедиться, что подключенные клиенты получают данные.
Подробнее о потоковых сервисах в ArcGIS REST Services Directory см. в разделе Потоковые сервисы.
Использование потокового сервиса
Выше, на рисунке REST-страницы потокового сервиса, обратите внимание на ссылку вверху для просмотра ресурсов потокового сервиса на карте ArcGIS JavaScript; эта опция обычно доступна для картографических сервисов.
Щелкните ArcGIS JavaScript , чтобы создать на-лету HTML-страницу, на которой можно визуализировать данные, передаваемые потоковым сервисом.
Если вы щелкните ArcGIS JavaScript правой кнопкой мыши и выберите Посмотреть исходный код , вы увидите код JavaScript. Разработчики могут использовать и редактировать этот код для создания веб-приложений, использующих потоковые сервисы.
Потоковые сервисы также можно использовать, внедряя их в веб-карту.
Фильтрация потокового сервиса
Потоковый сервис позволяет фильтровать данные на стороне клиента. Каждый клиент может запросить фильтр, применяемый к данным, перед их отправкой из потокового сервиса. Фильтр не влияет на поток данных к другим клиентам. Фильтр можно задать в момент подключения или после его установки.
Эти и другие параметры можно применить во время установки соединения, открыв подключение WebSocket.
Задание пространственной привязки для потока данных
Потоковый сервис имеет пространственную привязку по умолчанию, которую можно найти в ArcGIS Server Manager на странице описания сервиса. Если клиент хочет получать данные в другой пространственной привязке, ее нужно задать в момент подключения. После задания пространственной привязки ее нельзя изменить пока подключение работает. Для изменения пространственной привязки необходимо создать новое подключение WebSocket. Чтобы изменить пространственную привязку по умолчанию, необходимо использовать ключевое слово outSR, знать общепринятый ID (WKID) требующейся привязки и добавить outSR= к URL-адресу. Например, чтобы задать по умолчанию WGS 1984 Web Mercator (Auxiliary Sphere), WKID которой равен 3857, добавьте outSR=3857 к URL-адресу: ws://HOSTNAME:6180/arcgis/services/Vehicles/StreamService/0/subscribe?outSR=3857
Настройка фильтра
Фильтр потокового сервиса может содержать пространственную компоненту, SQL-подобную компоненту, и компоненту outFields. Каждая из них может быть задана или удалена независимо, т.е. любая, все или ни одна из них могут действовать в любой момент времени. Чтобы задать одну часть фильтра, просто задайте ее, не трогая другие. Другие части останутся неизменными.
Фильтр геометрии
Геометрическая часть фильтра соответствует структуре геометрических объектов JSON, возвращаемых ArcGIS REST API. Для сохранения производительности потокового сервиса, в качестве типа геометрии применяются только конверты.
Фильтр также может включать пространственное отношение, заданное ключевым словом spatialRel. Оно представляет пространственное отношение, которое должно применяться для входной геометрии при выполнении запроса. Единственное поддерживаемое пространственное отношение – это пересекает (intersects), используемое по умолчанию (esriSpatialRelIntersects).
Предполагается, что фильтр геометрии имеет ту же пространственную привязку, что и подключение, изменить это можно только в момент подключения. Если в качестве части геометрии указана другая пространственная привязка, конверт проецируется в пространственную привязку подключения, что позволяет использовать его при фильтрации объектов из потока данных.
Фильтр where
Фильтр where является SQL-подобным выражением, которое фильтрует объекты из потока данных с помощью проверки атрибутов на соответствие условию where. Выражение должно быть строковым значением JSON в кавычках. К поддерживаемым операциям относятся AND, OR, NOT, =, !=, , >=, IS NULL, IS NOT NULL, IN и LIKE. Можно сделать сравнение между полем и значением, например, (‘field1 > 1’) или между двумя схожими полями, например (‘field1 > field2’). Для принудительного изменения приоритета можно использовать скобки.
- Числовой сравнение – пример сравнения поля (Altitude) с числовым значением «Altitude < 1000" .
- Сравнение полей – пример сравнения двух полей: «speed > maxSpeed» .
- Сравнение строк – строки также можно сравнивать. Сравнения всегда учитывают регистр, буквенные значения должны быть заключены в одинарные кавычки. Например: «Departure_Airport=’KZSE'» .
- Выражения LIKE – строки можно сравнивать с помощью условия LIKE, применяя подстановочные символы. Знак процента (%) означает любое количество символов, подчеркивание (_) может быть одним любым знаком. В следующем примере выбираются люди, в именах которых второй и третий символы соответствуют символам имен Samantha и James: «name LIKE ‘_am%'» .
- Выражения IN – выражение IN позволяет задавать списки буквенных значений. Если поле соответствует любому значению в списке, объект передается потоком.
- Ниже приводится пример списка строк: «name IN (‘Bob’,’Jane’,’Henry’)» .
- Ниже приводится пример выражения IN, использующего список числовых значений: «alertCode IN (404,500,505)» .
- Также можно использовать логическое поле вместо логического выражения. Например, если объекты содержат логическое поле с именем active, можно написать выражение where, которое будет пропускать все объекты, имеющие значение true в поле active, например: «active» .
Фильтр выходных полей
Поля внутри потока данных могут быть отфильтрованы по-отдельности с помощью фильтра выходных полей, задаваемого ключевым словом outFields. Желаемые поля можно задать с помощью списка имен полей, разделенных запятыми.
В этом разделе
- Что такое потоковый сервис?
- Публикация потокового сервиса
- Потоковые сервисы в ArcGIS REST Services Directory
- Использование потокового сервиса
- Фильтрация потокового сервиса
- Фильтр выходных полей
Зачем нужна потоковая обработка данных, как её сочетать с пакетной, почему не обойтись без Apache Spark
Что такое потоковая обработка данных? Это – когда решение в реальном времени обрабатывает данные, которые поступают также в реальном времени, в формате потока, генерируются непрерывно. В потоке сложно определить полный и целостный набор данных. Обычно компании не имеют возможности хранить такие данные в полном объёме, произвольный доступ к ним есть не всегда.
Только знакомитесь с потоковой обработкой данных? Чтобы не запутаться в понятиях, прочитайте статью, 6 фактов об Apache Spark, которые нужно знать каждому. О значении потоковой обработки данных, необходимости сочетать её с пакетной и о том, как использовать для этого Apache Spark, размышляет Вамши Сриперумбудур. В Informatica Вашми занимается маркетингом решений Big Data и аналитики.
Задачи для потоковой обработки данных
Потоковая обработка данных применяется не только для данных, собранных через интернет вещей. Вот несколько примеров задач, для которых она будет полезна:
- Бороться с финансовыми мошенничествами (фродом) в реальном времени;
- Быстро сделать интересное предложение клиенту, который собирается перестать пользоваться вашими услугами или покупать у вас товары;
- Ввести динамическое ценообразование, в некоторых случая оперативно снижать цену для клиентов;
- Привлечь потенциального клиента в магазин, рядом с которым он находятся;
- В реальном времени мониторить данные пациентов.
Существует множество других примеров использования потоковой обработки данных в финансовом секторе, телекоме, рознице, здравоохранении, энергетике и государственном секторе.
Управляем одновременно потоковой обработкой данных и пакетной
Зачастую потоковая обработка данных не приносит пользы без привлечения пакетной. Давайте представим, то мы определили клиента для маркетинговых коммуникаций. Он входит в магазин? Мы его идентифицируем (например, с помощью видеокамеры) и сразу в реальном времени делаем ему персонализированное предложение. Для этого мы можем использовать его поисковую историю в браузере или историю его покупок в нашем магазине.
Данные с видеокамеры будут поступать в потоке, потребуют потоковой обработки данных. Пакетная используется системами, в которых хранится информации о клиенте, на основе которой мы будем делать наше предложение. Например, это может быть MDM-система. Данные в первом и втором случае будут значительно различаться. Они поступают на разных скоростях, с разной латентностью, задержкой. Эти различия нужно будет преодолеть, чтобы в реальном времени сделать клиенту персональное предложение. Данные нужно будет интегрировать.
Потоковая обработка данных с Apache Spark: разбить поток на фрагменты
Раньше потоковую обработку данных можно было осуществлять только отдельно от пакетной. Это подразумевало, что традиционные ETL-решения не могли работать с данными в потоке (обрабатывать данные и вносить их в базы). Для таких задач нужно было внедрять отдельное решение.
Некоторые вендоры, которые предлагают решения, которые ориентированы только на потоковую обработку данных, даже заявляли, что пакетная не нужна совсем. Они доходили до того, что называли её видом потоковой обработки данных.
Например, среди решений, которые успешно применялись для потоковой обработки данных – Apache Spark. Он разделяет информацию на устойчивые распределенные наборы данных (RDD). По сути, Apache Spark разбивает поток данных на RDD – фрагменты данных, которые распределяются по разным узлам кластера. Несколько таких фрагментов соединяются вместе в микро-пакет – DStream (Discretized Stream). Несколько DStream могут обрабатываться параллельно.
Проблема с механизмом DStream как раз была в том, при его применении приходилось разделять потоковую обработку данных и пакетную, а это усложняло весь механизм работы с данными и делало её дороже.
Потоковая обработка данных с Apache Spark: превратить поток в бесконечную таблицу для SQL
Со второй версии в Apache Spark доступен Structured Streaming, который помог преодолеть недостаток DStream. Structured Streaming – это масштабируемый и отказоустойчивый фреймворк для потоковой обработки данных, в основе его Spark SQL. Structured Streaming представляет поток данных в виде бесконечной таблицы.
Решение позволяет и проводить потоковую обработку данных, и интеграцию их с данными, которые обрабатываются пакетной. Другими словами, Structured Streaming для решений Big Data пытается унифицировать потоковые, итеративные и пакетные запросы с помощью абстрактного структурирования данных.
Потоковая передача данных: варианты использования, преимущества и примеры
Потоковая передача данных — это процесс непрерывного сбора данных по мере их создания и перемещения. Эти данные обычно обрабатываются программным обеспечением потоковой обработки.
Потоковая передача данных в сочетании с обработкой позволяет получать интеллектуальные данные в режиме реального времени.
Потоки данных могут создаваться из различных источников в любом формате и объеме. Самые мощные потоки объединяют несколько источников для формирования полной картины операций и процессов.
Например, данные сети, сервера и приложений можно объединить для мониторинга работоспособности вашего веб-сайта, а также для того, чтобы обнаружить снижение производительности.
Что такое потоковая обработка?
Помимо передачи данных вам необходимо их обработать. ПО для потоковой обработки настроено на прием и анализ данных по конвейеру, чтобы выявить закономерности и тенденции. Потоковая обработка может также включать в себя визуализацию данных для информационных панелей.
Далее потоки данных и потоковая обработка объединяются для получения информации в режиме реального времени. Падение производительности может привести к отставанию или пропуску точек данных.
ПО для потоковой обработки со временем необходимо масштабировать. Например, в том случае, если на вашем веб-сайте повышен трафик, и вы не хотите потерять данные о поведении пользователей.
Потоковые процессоры должны быть высоко доступными. Они должны продолжать выполнять свои задачи, даже если компоненты выходят из строя. Иначе это снизит качество данных, поскольку поток не будет анализироваться во время сбоя.
Преимущества потоковой передачи данных
- Действие в реальном времени.
Это основное преимущество потоковой передачи данных, так как в век информационных технологий новые данные появляются ежесекундно. Поэтому лучшие компании будут использовать самую свежую информацию из внутренних и внешних ресурсов.
- Конкурентное преимущество на рынке.
Возможность быстро собирать, анализировать и действовать на основе текущих данных дает компаниям конкурентное преимущество на рынке. Аналитика в режиме реального времени позволяет компаниям лучше реагировать на тенденции рынка, потребности клиентов и возможности для бизнеса.
- Удовлетворенность клиентов.
Чем быстрее компания сможет отреагировать на отзывы клиентов и решать возникающие проблемы, тем выше будет ее репутация. Таким образом удовлетворенность и лояльность клиентов будет увеличена.
Сокращение потерь.
Потоковая передача данных не только помогает удержать клиентов, но и предотвращает другие потери. Аналитика в режиме реального времени предупредит возможные сбои в работе, финансовые спады и утечки данных.
Эта информация поможет компании предотвратить или, по крайней мере, смягчить последствия этих событий.
Различия между потоковой обработкой и традиционной пакетной обработкой
Пакетная обработка — это поэтапный подход к сбору и обработке данных, а потоковая обработка выполняется с постоянной скоростью.
Потоковая обработка — это идеальный метод, когда скорость является основным фактором. Пакетная обработка используется там, где не требуется аналитика в реальном времени или данные не могут быть преобразованы в поток данных для анализа, например, при работе с устаревшими технологиями.
Примеры потока данных
Потоки данных нужны для того, чтобы охватить данные всех типов. Важно, чтобы эти данные были критически важны для отслеживания в режиме реального времени.
Это могут быть данные о местонахождении, цены на акции, мониторинг IT-систем, обнаружение мошенничества, продажи, активность клиентов и многое другое.
Ниже рассмотрим две компании, которые используют некоторые из этих типов данных, чтобы обеспечить свою активность.
1. Lyft
Lyft — это приложение для обмена поездками, которому необходимы данные с точностью до секунды, чтобы скоординировать пассажиров и водителей.
Lyft показывает пассажиру доступные автомобили и цены на различные уровни обслуживания в зависимости от расстояния, спроса и условий движения. Все эти факторы могут измениться за считанные секунды, а это означает, что Lyft должен иметь доступ к этим данным мгновенно.
После того, как пассажир выбирает уровень обслуживания, Lyft собирает данные о доступном транспорте в этой категории и учитывает расстояние, чтобы подобрать лучшего водителя для пассажира. Эти показатели основаны на дополнительных данных GPS и трафика.
Во время поездки данные о местоположении передаются с телефона водителя, поэтому Lyft может отслеживать прогресс и местоположение, а также сопоставлять его с другими запросами на поездку.
Передача данных в Lyft идет непрерывно — это обеспечивает максимальный комфорт для пользователей и клиентов.
2. YouTube
По данным Statista , каждую минуту на YouTube загружается более 500 часов видеоконтента — это огромный поток данных, который обрабатывается непрерывно.
YouTube необходимо одновременно анализировать множество данных, чтобы отслеживать и отображать количество просмотров, комментариев, подписчиков и другие показателей в режиме реального времени.
Учитывая большой размер и количество видеофайлов, YouTube по-прежнему остается очень доступным и удобным для пользователей.
YouTube также поддерживает видео, в которых создатели контента и зрители могут взаимодействовать друг с другом с помощью видеопотока и чата в реальном времени. В этом случае мгновенная передача данных очень важна, чтобы обеспечить бесперебойную работу.
Проблемы с потоками данных
1. Доступность.
Помимо записи данных их необходимо регистрировать в хранилище. Если клиент продлил подписку на ваш премиум контент — это прекрасно, но если вы не сможете проанализировать историю его покупок, то скорее всего вы не сформируете для него новые предложения на основе его предпочтений.
2. Своевременность.
Данные из потоков быстро устаревают, поэтому очень важно, чтобы ваше приложение могло реагировать на последнюю информацию и обновлять свои алгоритмы.
3. Масштабируемость.
Объем потока данных может быть огромным, поэтому важно убедиться, что ваши инструменты хранения и обработки готовы к работе.
Что такое потоковая передача данных?
Потоковые данные – это данные, которые непрерывным и инкрементальным образом передаются в больших объемах, при этом на обработку затрачивается как можно меньше времени. Организации располагают тысячами источников данных, одновременно передающих сообщения, записи или данные, размер которых может варьироваться в пределах от нескольких байт до нескольких мегабайт (МБ). Потоковая передача данных содержит географическое расположение, событие и данные датчиков, которые компании используют для аналитики в режиме реального времени и обеспечения видимости множества различных аспектов своего бизнеса. Например, компании могут отслеживать изменения в общественных настроениях касательно своих брендов и продуктов, постоянно анализируя характер навигации и публикации пользователя в потоках социальных сетей, а затем своевременно реагировать на эти изменения должным образом.
Какими характеристиками обладает потоковая трансляция данных?
Поток данных обладает перечисленными ниже конкретными характеристиками, которые его определяют.
Хронологическая значимость
Индивидуальные элементы потока данных содержат временные метки. Сам по себе поток данных может быть чувствительным к временным параметрам и обладать уменьшающейся значимостью по истечении определенного интервала времени. Например, ваше приложение может рекомендовать рестораны в зависимости от расположения пользователя. Вам будет необходимо работать с данными о геолокации пользователя в режиме реального времени, иначе такие данные потеряют свою значимость.
Непрерывность потока
Потоки данных не обладают началом или концом. Они собирают данные на постоянной основе и существуют непрерывно на протяжении всего необходимого времени. Например, журналы активности сервера сохраняют события до тех пор, пока сервер запущен.
Уникальность
Повторная передача потока данных вызывает проблемы из-за чувствительности к временным параметрам. Таким образом, задача точной обработки данных в режиме реального времени обретает критическую важность. К сожалению, возможности по предоставлению повторных передач ограничены в рамках большинства источников потоковой передачи данных.
Отсутствие гомогенности
Некоторые источники могут выполнять потоковую передачу данных во множестве структурированных форматов, таких как JSON, Avro и списки разделенных запятыми значений – CSV, используя типы данных, которые состоят из строк, чисел, дат и двоичных параметров. Системы обработки потоков должны обладать возможностями по обслуживанию различных вариантов данных.
Неидеальность
Временные ошибки в источнике могут приводить к повреждениям или утере элементов потоковых данных. Задачи по гарантированию согласованности данных могут оказаться довольно сложными из-за непрерывной природы потока. Системы аналитики и обработки потоков обычно обладают логикой для подтверждения данных, что позволяет минимизировать количество ошибок либо смягчать их влияние.
Почему потоковые данные – это важно?
Традиционные системы обработки данных записывают данные в централизованное хранилище данных и обрабатывают записи группами или пакетами. Эти системы были созданы специально для того, чтобы потреблять и структурировать данные для последующего анализа. Впрочем, в последние годы характер корпоративных данных и сами системы обработки базовых данных радикальным образом изменились.
Бесконечный объем данных
Объемы данных, сгенерированных на базе источников потоков, могут быть невероятно большими, из-за чего средства аналитики в режиме реального времени сталкиваются с проблемами при регулировке целостности (подтверждение соответствия), структурированности (эволюция) или скорости потоковых данных (пропускная способность и задержка).
Продвинутые системы обработки данных
В то же время облачная инфраструктура познакомила нас с гибкими подходами при масштабировании и использовании вычислительных ресурсов. Вы сможете пользоваться только необходимыми ресурсами и платить только за то, что действительно используете. У вас есть возможность в режиме реального времени фильтровать или агрегировать данные как перед сохранением потоковых данных, так и после выполнения этой операции. В архитектуре потоковой трансляции данных используются облачные технологии для потребления, обогащения, анализа и перманентного хранения потоковых данных (при необходимости).
Для чего можно применять потоковую передачу данных?
Система обработки потока является предпочтительной для большинства сценариев использования, подразумевающих непрерывное формирование новых и динамических данных. Обработка потоковых данных применима в большинстве отраслевых сегментов и случаев использования, подразумевающих обработку больших данных.
Обычно компании начинают с простых задач, например со сбора данных системных журналов, или с элементарных вычислений, например с обновления минимумов и максимумов. Затем эти задачи трансформируются в более сложную обработку, происходящую в режиме, близком к реальному времени.
Приведем несколько примеров потоковых данных.
Анализ данных
Приложения обрабатывают потоки данных с целью формирования отчетов и выполнения ответных действий, например активации сигнализации, когда значения ключевых параметров выйдут за указанные границы. Более сложные приложения обработки потоков способны формировать расширенную аналитику, применяя алгоритмы машинного обучения к бизнес-данным и данным клиентской активности.
Приложения Интернета вещей
Устройства Интернета вещей (IoT) станут еще одним отличным примером использования потоков данных. Датчики, используемые в автомобилях, промышленном оборудовании и сельскохозяйственной технике, отправляют данные в потоковое приложение. Приложение осуществляет мониторинг производительности, предупреждает возникновение возможных дефектов и автоматически заказывает необходимые запасные части для предотвращения простоя оборудования.
Финансовая аналитика
Финансовые учреждения используют потоковые данные для отслеживания изменений на фондовых биржах в режиме реального времени, вычисления рисковой стоимости и автоматического выполнения ребалансировки портфеля ценных бумаг на основании изменений биржевого курса. Еще одним способом использования технологии в финансовой сфере является обнаружение мошеннических операций с транзакциями по кредитным картам, для чего применяется логический вывод данных в режиме реального времени и их сравнение с потоковыми данными транзакций.
Рекомендации насчет режима реального времени
Приложения для работы с недвижимостью позволяют отслеживать данные геолокации с мобильных устройств потребителей и в режиме реального времени составлять рекомендации насчет объектов, которые стоит посетить. Точно так же могут работать и приложения для рекламы, продуктов питания, розничной торговли и прочие потребительские приложения: все они смогут составлять рекомендации в режиме реального времени, что повысит ценность таких приложений для пользователей.
Гарантии обслуживания
Вы можете применять обработку потоков данных для отслеживания и поддержания уровней сервисного обслуживания для приложений и оборудования. Например, гелиоэнергетическая компания должна предоставлять своим клиентам определенную проходную мощность, в противном случае ей придется платить штрафы. Она внедряет приложение для потоковой передачи данных, которое будет отслеживать состояние всех установленных панелей и в режиме реального времени назначать для них обслуживание. Благодаря этому становится возможной минимизация периодов низкой пропускной способности каждой панели и связанных с ними штрафных выплат.
Мультимедиа и игры
Издатели мультимедиа осуществляют потоковую передачу миллиардов операций по навигации со своих онлайн-ресурсов, агрегируют и обогащают данные информацией о демографии пользователей, а также оптимизируют размещение контента. Это помогает издателям предоставлять целевой аудитории улучшенный и более релевантный опыт взаимодействия с приложениями. Компании, занимающиеся онлайн-играми, также используют обработку потоков событий для анализа взаимодействий игроков внутри игры и предлагают динамический опыт взаимодействия для вовлечения игроков.
Контроль рисков
Платформы социальных сетей и живых трансляций считывают данные о поведении пользователей в режиме реального времени для контроля рисков в связи с финансовой активностью пользователей, которая может относиться к пополнению счетов, возмещению средств и получению наград. Специалисты по таким платформам используют панели управления для гибкой корректировки стратегий управления рисками в режиме реального времени.
В чем разница между пакетными и потоковыми данными?
Пакетная обработка – это метод, используемый компьютерами для периодического выполнения больших объемов повторяющихся заданий с данными. Ее можно использовать для вычислений по любым запросам к данным из разных наборов. Обычно вычислительные результаты подобной обработки основываются на всех входящих в пакет данных, благодаря чему обеспечивается глубокий анализ наборов больших данных. В качестве примера платформ, поддерживающих пакетные задания, можно привести системы, использующие MapReduce, например Amazon EMR.
В то же время потоковая обработка требует подачи последовательностей данных и инкрементного обновления метрик, отчетов и итоговой статистики в ответ на каждую поступающую запись данных. Этот тип обработки лучше всего подходит для аналитики в режиме реального времени и функций ответа.
Потоковая обработка
Охват данных
Запросы ко всем или большей части данных в наборе или же их обработка. Запросы или обработка данных в пределах скользящего временного окна или самой последней записи данных.
Размер данных
Большие пакеты данных. Отдельные записи или микропакеты из нескольких записей.
Производительность
Требуется задержка в пределах нескольких секунд или миллисекунд.
Анализ
Многие организации выстраивают гибридные модели за счет комбинации двух подходов для поддержки операций как на уровне реального времени, так и на пакетном уровне. Например, сперва вы можете обработать данные на платформе потоковой обработки данных, такой как Amazon Kinesis, и получить аналитику в режиме реального времени. Затем вы можете сохранить результаты в таком хранилище, как Простой сервис хранения данных Amazon (Amazon S3). Там вы сможете преобразовать данные и загрузить их для различных случаев применения пакетной обработки.
Amazon Redshift Streaming Ingestion позволяет пользователям потреблять данные непосредственно из Потоков данных Amazon Kinesis без их размещения в Amazon S3. Сервис также может потреблять данные из Управляемой потоковой передачи Amazon для Apache Kafka (Amazon MSK) и отправлять их в Amazon Redshift.
Как выполнять обработку потоковых данных?
Архитектура обработки потоковых данных содержит два основных типа компонентов.
Поставщики потоков
Поставщики потоков – это программные компоненты в приложениях и системах IoT, которые заняты сбором данных. Они передают записи в обработчик потока, который хранит имена потоков, значения данных и номера последовательностей. Такой обработчик буферизует или временно группирует записи данных по имени потока. Он использует номер последовательности для отслеживания уникальной позиции каждой записи и обрабатывает данные в хронологической последовательности.
Потребители потока
Потребителями потока выступают программные компоненты, которые обрабатывают и анализируют потоки данных, буферизованные в обработчике. Каждый потребитель обладает возможностями аналитики, позволяющими выполнять задачи корреляции, агрегирования, фильтрации, составления выборки или машинного обучения. Каждый поток может обладать несколькими потребителями, а каждый потребитель может обрабатывать сразу несколько потоков. Потребители также отправляют измененные данные обратно в обработчик для создания новых потоков для других потребителей.
Реализация архитектуры
Для реализации архитектуры обработки потоковых данных необходимо использовать слои обработки и хранилища. Уровень хранилища обязан поддерживать очередность записей и строгую непротиворечивость для обеспечения быстрых, экономичных и воспроизводимых операций записи и чтения больших потоков данных. Уровень обработки отвечает за потребление данных, расположенных на уровне хранилища, выполнение вычислений с использованием этих данных и уведомление уровня хранилища о том, какие данные можно удалить за ненадобностью.
Какие проблемы возникают при работе с потоковыми данными?
Архитектура обработки потоковых данных требует особой подготовки, обусловленной характером и объемом данных.
Доступность
Приложения потоковой трансляции данных требует стабильности работы, низкой задержки и высокой доступности. Потребители регулярно получают новые данные из потоков для последующей обработки. Задержки на стороне поставщика данных могут привести к резервному копированию системы и вызвать различные ошибки.
Возможности масштабирования
Необработанные потоки данных могут неожиданным образом создавать пиковые нагрузки. Например, количество публикаций в социальных сетях резко возрастает во время крупных соревнований. По этой причине система должна обеспечивать правильное формирование последовательностей данных, гарантируя доступность и стабильность работы даже во время пиковых нагрузок.
Надежность
Так как данные зачастую обладают чувствительностью к временным параметрам, система обработки потоков должна быть устойчивой к сбоям. В ином случае данные можно навсегда потерять при отключении питания либо при сбое системы.
Как AWS может удовлетворить ваши требования к потоковым данным?
AWS предоставляет несколько вариантов работы с потоковыми данных.
Amazon Kinesis
Kinesis – эта платформа для потоковой трансляции данных на AWS. Она предлагает надежные сервисы, которые позволяют легко и просто загружать и анализировать потоковые данные, а также создавать собственные приложения для решения специфических задач, возникающих при обработке потоковых данных.
Kinesis предоставляет три сервиса: Данные Amazon Kinesis Firehose, Потоки данных Amazon Kinesis и Управляемая потоковая передача Amazon для Apache Kafka (Amazon MSK).
Kinesis Data Firehose
Kinesis Data Firehose может считывать и автоматически загружать потоковые данные в Простой сервис хранения данных Amazon (Amazon S3) и Amazon Redshift. С помощью этого сервиса вы сможете выполнять анализ в реальном времени, применяя существующие инструменты бизнес-аналитики и информационные панели, которые вы используете при решении повседневных задач.
Kinesis Data Streams
Kinesis Data Streams может непрерывно захватывать и сохранять данные из сотен тысяч источников со скоростью несколько терабайтов (ТБ) в час. Программа поддерживает платформы потоковой обработки, выбранные пользователем, включая Amazon Kinesis Client Library (KCL), Apache Storm и Apache Spark Streaming.
Amazon MSK
Amazon MSK – это полностью управляемый сервис, который упрощает создание и запуск приложений, использующих Apache Kafka для обработки потоковых данных. Apache Kafka – это платформа с открытым исходным кодом для создания потоковых конвейеров данных и приложений в реальном времени.
Amazon Redshift
Amazon Redshift Streaming Ingestion позволяет пользователям принимать потоковые данные в свои хранилища данных для проведения аналитики в режиме реального времени из нескольких потоков данных Kinesis. Вы можете проводить глубокую аналитику с помощью знакомых инструкций языка SQL и с легкостью создавать конвейеры ELT, а также управлять ими. Кроме того, вы сможете также обрабатывать огромные объемы потоковых данных с низкой задержкой и высокой пропускной способностью для выполнения аналитики за считанные секунды.
Прочие потоковые решения в Amazon EC2
Пользователи могут установить платформы потоковых данных в Эластичное вычислительное облако Amazon (Amazon EC2) и Amazon EMR по собственному усмотрению, а также создать собственные уровни хранилища и обработки. В результате вы сможете избежать проблем при выделении инфраструктуры, а также получите доступ к различных потоковым хранилищам и платформам обработки данных. Для уровня носителей данных доступны варианты Amazon MSK и Apache Flume. Для уровня обработки потоковых данных доступны, среди прочих, варианты Apache Spark Streaming и Apache Storm.
Начните работу с потоковой трансляцией данных на AWS, создав бесплатный аккаунт AWS уже сегодня!