Каждая точка данных в системе, регулярно генерирующей данные, соответствует событию (Event). Потоки событий (Event Stream) — это непрерывный поток событий или точек данных. Иногда потоки данных называют в сообществе разработчиков потоками данных (Data Stream), потому что они состоят из непрерывных точек данных. Event Stream Processing — это действия, выполняемые с генерируемыми событиями.
В этой статье подробно рассматриваются потоки данных и Event Stream Processing, рассказывается, как работает Event Stream Processing, объясняются различия между Event Stream Processing и Batch Processing, преимущества и способы применения ESP, а завершается она наглядным примером Event Stream Processing.
Потоки данных: обзор
Согласование между сервисами — одна из самых больших сложностей, связанных с работой микросервисов. В традиционных архитектурах данные собираются только по запросу. Допустим, у нас есть три сервиса, A, B и C. Сервис A спрашивает у других сервисов об их текущем состоянии и предполагает, что они всегда готовы ответить. Если другие сервисы недоступны, это вызовет проблемы у пользователя.
Для компенсации сетевых сбоев и отрицательных влияний, вызываемых изменениями в топологии сети, сервисы используют повторные попытки. Однако в конечном итоге это добавляет ещё один уровень сложности и повышает затраты.
Для устранения проблем традиционных архитектур архитектуры на основе событий исповедуют философию «говори, не спрашивая». В нашем примере сервисы B и C публикуют непрерывные потоки данных, например, событий, а сервис A подписывается на эти потоки событий. Благодаря этому сервис A может анализировать факты, агрегировать результаты и локально их кэшировать.
Подобное использование потоков событий имеет множество преимуществ, и в том числе:
- Системы способны достаточно точно имитировать текущие процессы.
- Повышенный уровень использования функций scale-to-zero (serverless-вычислений), поскольку по необходимости в состоянии простоя могут находиться больше сервисов.
- Повышенная адаптивность
Концепция Event Stream Processing
Event Stream Processing (ESP) — это набор технологий, упрощающий разработку архитектуры на основе данных. Как говорилось выше, Event Stream Processing — это процесс реагирования на события, созданные управляемой событиями архитектурой.
Он может выполнять множество действий, например:
- Выполнение вычислений
- Преобразование данных
- Анализ данных
- Обогащение данных
Можно спроектировать конвейер данных для преобразования данных событий, являющийся основой Event Stream Processing. Подробнее мы раскроем это в следующем разделе.
Основы Event Stream Processing
Event Stream Processing состоит из двух отдельных технологий. Первая технология — это система логического хранения событий, вторая — ПО для обработки этих событий.
Первый компонент отвечает за хранение данных и сохраняет информацию с привязкой к временным меткам. Отличным примером этого могут быть потоковые данные, ежеминутно и в течение целого дня фиксирующие температуру на улице. В этой ситуации каждое событие состоит из показателя температуры и точного времени замера. Вторым компонентом являются Stream Processor или Stream Processing Engine.
Чаще всего разработчики используют для временного хранения и обработки событий Apache Kafka. Эта технология также позволяет создавать конвейереы на основе потоков данных, в которых обработанные события передаются в последующие потоки событий для дальнейшей обработки.
Сравнение Event Stream Processing и Batch Processing
С развитием технологий компаниям приходится иметь дело с гораздо большими объёмами данных. Поэтому чтобы справиться с такими темпами изменений требуются более сложные технологии обработки данных. Традиционное приложение отвечает за сбор, хранение и обработку данных, а также за хранение обработанных результатов.
Обычно эти процедуры выполняются пакетно, то есть приложению приходится ждать, прежде чем накопится достаточное количество данных для обработки. Количество времени, которое может потребоваться приложению для ожидания, неприемлемо для приложений реального времени, требующих быстрой обработки данных.
Чтобы решать эту задачу иначе, используются потоки данных. При Event Stream Processing каждая точка данных (событие) обрабатывается мгновенно, то есть отсутствует бэклог точек данных, благодаря чему такой подход идеален для приложений реального времени.
Кроме того, Stream Processing позволяет выявлять паттерны, выполнять изучение с разными степенями внимания и одновременно исследовать данные из множества разных потоков. Распределяя операции по времени, Event Stream Processing требует гораздо меньше оборудования, чем пакетная обработка (Batch Processing).
Преимущества использования Event Stream Processing
Event Stream Processing используется, когда с потоками событий необходимо предпринимать быстрые действия. Поэтому Event Stream Processing используется как решение для управления огромными объёмами данных. Внедрение Event Stream Processing в процесс работы имеет множество преимуществ, и в том числе:
- Возможна разработка конвейеров потоков событий для реализации сложных случаев применения потоковой передачи. Например, при помощи конвейера потоков событий (Event Stream Pipeline) можно дополнять данные событий метаданными и модифицировать такие объекты для хранения.
- Применение Event Stream Processing в процессе работы позволяет принимать решения в реальном времени.
- Простота расширения инфраструктуры при увеличении объёмов данных.
- Event Stream Processing обеспечивает возможность непрерывного мониторинга событий, что позволяет создавать алерты для выявления трендов и аномалий.
- Можно исследовать и обрабатывать огромные объёмы данных в реальном времени, что позволяет фильтровать или агрегировать данные перед сохранением.
Способы применения потоков событий
В процессе эволюции Internet of Things (IoT) развивается и потребность в анализе в реальном времени. Так как архитектура обработки данных становится всё больше ориентированной на события, важность ESP продолжает расти.
Потоковая передача событий применяется в различных ситуациях, распространяющихся на множество разных сфер и организаций. Давайте рассмотрим некоторые из отраслей, в которых внедрение Event Stream Processing в методологии обработки данных обеспечивает преимущества.
Кроме помощи масштабным отраслям ESP также позволяет решать задачи, с которыми мы сталкиваемся повседневно. Вот некоторые примеры его использования.
▍ Способ применения 1: push-уведомления GitHub при помощи потоков событий
Потоки данных — прекрасный способ поддерживать актуальность изменений в кодовой базе в реальном времени. Сконфигурировав поток событий и подписавшись на интересующие вас события, вы сможете получать push-уведомления при совершении действий с вашим репозиторием.
Мы рассмотрим пример создания расширения для Chrome, использующего потоки событий для реализации push-уведомлений GitHub в реальном времени.
Расширение GitHub Notifier для Google Chrome позволяет в реальном времени просматривать уведомления о том, как кто-нибудь взаимодействует с вашими репозиториями GitHub. Это отличный способ отслеживать активность проекта и быстро реагировать на issue или пул-реквесты. Расширение можно бесплатно установить из Google Chrome store. Достаточно просто установить его и войти в свой аккаунт GitHub.
Сделав это, вы начнёте получать уведомления о том, когда вас кто-то упоминает, добавляет комментарии к вашим репозиториям или даже ставит им звёздочки. Также можно выбрать уведомления для конкретных событий, например, новых релизов или пул-реквестов.
▍ Способ применения 2: Internet of Things in Industry (IIot)
В контексте автоматизации промышленных процессов компании могут внедрять IIoT-решения, добавляя множество датчиков, передающих потоки данных в реальном времени. Эти датчики можно устанавливать сотнями штук, а их потоки данных часто накапливаются IoT-шлюзами, которые могут обеспечивать непрерывный поток данных в технологический стек. Для использования этих данных, анализа трендов и принятия решения на их основе предприятиям необходимо применять обработку потоков данных. Этот поток событий потребляется платформой потоковой передачи данных, которая выполняет аналитику в реальном времени.
Например, нам может быть важно отслеживание средней температуры в течение 30 секунд. После этого нам нужно, чтобы температура отображалась, только если она превосходит 45 °C. Если это условие удовлетворяется, другие программы могут использовать предупреждение, чтобы изменять свои процессы в реальном времени с целью предотвращения перегрева.
Существует множество технологий, помогающих в автоматизации процессов. Один из них — это Camunda Workflow Engine, он реализует автоматизацию процессов и исполняет процессы, описанные в международном стандарте моделирования процессов Business Process Model and Notation (BPMN). BPMN предоставляет удобный в использовании визуальный язык моделирования для автоматизации наиболее сложных бизнес-процессов. Если вы хотите начать работать с процессом Camunda, лучше всего начать с коннекторов Camunda.
▍ Способ применения 3: обработка платежей
Быстрая обработка платежей — превосходный способ применения обработки потоков событий, позволяющий уменьшить недовольство пользователей и избежать нежелательного поведения. Например, если пользователь хочет совершить платёж, но сталкивается с существенными задержками, он может обновить страницу, что приведёт к сбою транзакции, из-за чего он не будет уверен, пополнен ли его счёт. При работе с автоматическими платежами такие задержки могут иметь кумулятивный эффект, особенно если задерживаются сотни платежей. Это может привести к многократным повторным попыткам или таймаутам.
Для поддержки плавной обработки десятков тысяч одновременных запросов можно использовать ESP.
Событие запроса платежа может быть отправлено от топика к исходному обработчику платежей, изменяющему текущее общее количество обрабатываемых платежей. Затем создаётся последующее событие, передаваемое другому обработчику, подтверждающему, что платёж может быть выполнен, и изменяющему баланс пользователя. Далее генерируется завершающее событие, и баланс пользователя обновляется другим обработчиком.
▍ Способ применения 4: кибербезопасность
Системы кибербезопасности собирают миллионы событий для выявления новых угроз и выработки понимания взаимосвязей между действиями. Чтобы снизить количество ложноположительных срабатываний, технологии кибербезопасности используют Event Streaming Processing для аугментации данных об угрозах и предоставления данных, обогащённых контентом. Они выполняют это при помощи последовательности процессов, включающих в себя следующие действия:
- Сбор событий в реальном времени от разнообразных источников данных, например, параметров потребителей.
- Фильтрация потоков данных, чтобы поступали только релевантные данные для устранения ложноположительных срабатываний или несерьёзных атак.
- Использование потоковых приложений в реальном времени для коррелирования событий между интерфейсами различных источников.
- Перенаправление приоритетных событий другим системам, например, системам security information and event management (SIEM) или системам security automation, orchestration and response (SOAR).
▍ Способ применения 5: оптимизация авиаперевозок
Можно создавать приложения реального времени для повышения комфорта пассажиров до, во время и после полётов, а также увеличения общей эффективности процесса. Мы можем эффективно координировать события и реагировать в случае критически важных событий, например, сканирования пассажирами их билетов в гейте; такие события будут доступны для всех бэкенд-платформ, применяемых авиакомпаниями и аэропортами.
Например, на основании конкретного типа событий мы можем применять данные тремя возможными способами:
- Точное прогнозирование времени взлёта и задержек.
- Уменьшение необходимости во вспомогательном персонале благодаря предоставлению пассажирам данных в реальном времени.
- Снижение влияния одного рейса на другие рейсы.
▍ Способ применения 6: онлайн-торговля
ESP может использоваться в сфере онлайн-торговли для упрощения «просмотра с целью покупки». Для этого можно создать исходный поток событий для захвата создаваемых покупателями событий. При этом в поток подаются три типа событий:
- Покупатель видит товар.
- Покупатель добавляет товар в корзину.
- Покупатель делает заказ.
Мы можем дополнять эти способы применения, добавляя отдельные процессы или алгоритмы, например:
- Калькулятор почасовых продаж, который парсит поток в поисках событий «покупатель делает заказ» и вёл счёт общих продаж за каждый час.
- Трекер «просмотра с целью покупки» товара, считывающий из потока событие «Покупатель видит товар» и отслеживает общее количество просмотров каждого товара. Дополнительно он парсит из потока события «Покупатель делает заказ» и отслеживает общее количество проданных единиц каждого товара.
- Когда сервис выявления оставленных корзин, считывающий все три типа событий и использующий описанный выше алгоритм для выявления покупателей, оставивших свою корзину, обнаруживает неоплаченную корзину, создаётся новое событие «Покупатель оставил корзину» и новый топик.
Заключение
В мире, который всё больше зависит от событий, Event Stream Processing (ESP) возник как методология, жизненно важная для организаций. Потоки событий становятся всё более важными источниками данных, потому что всё больше компаний переходит на потоковую архитектуру. Преимущество применения потоков событий заключается в аналитике в реальном времени, ускорении реагирования и повышении удобства для покупателей. Они имеют множество плюсов по сравнению с традиционной пакетной обработкой.
Кроме того, существует множество случае применения, в которых потоки данных помогают решать конкретные задачи бизнеса. Если вы стремитесь улучшить показатели своего бизнеса, подумайте о применении Event Stream Processing.
???? Голосуй за нас на премии «ЦОДы РФ»!