Назначение#
EVP — программный продукт Platform V Synapse Streaming Event Processing, предназначен для функции фильтрации, трансформации форматов событий, агрегации, выявления аномалий и закономерностей. Чтение входящего потока и запись результата обработки происходит из topic(s) сервиса передачи событий. Правила обработки событий задаются с помощью DSL, что снижает трудозатраты и время на разработку.
Компоненты, входящие в состав продукта Platform V Synapse Streaming Event Processing (далее — продукт):
Код компонента |
Название компонента |
Назначение |
|---|---|---|
EVPC |
Synapse Cloud Event Streaming Processing |
Компонент, предназначенный для потоковой обработки событий, поступающих из одного или нескольких событийных доменов. Результатом потоковой обработки событий является новый поток событий, поставщиком которого является сервис потоковой обработки событий. Компонент предназначен для развертывания в облачной среде исполнения Kubernetes или OpenShift. |
EVPT |
Сервис обратного отсчета потоковой обработки |
Компонент, предназначенный для предоставления возможности работы с расписанием задач. Задача представляет собой запланированный единичный или повторяющийся HTTP/HTTPs-запрос. Вспомогательный сервис, может использоваться как для отслеживания окон агрегации облачного потокового обработчика, так и самостоятельно для прикладных нужд. Компонент предназначен для развертывания на ВМ и в облачной среде исполнения Kubernetes или OpenShift. |
EVTP |
Сервис потоковой обработки событий |
Компонент, предназначенный для потоковой обработки событий, поступающих из одного или нескольких событийных доменов. Результатом потоковой обработки событий является новый поток событий, поставщиком которого является сервис потоковой обработки событий. Потоковый обработчик на базе Apache Flink. Компонент предназначен для развертывания только на ВМ. |
EVTP#
Компонент представляет собой кластер Apache Flink, управляемый с помощью Zookeeper, и предназначен для установки исключительно на виртуальные машины (ВМ).
Apache Flink состоит из двух ключевых компонентов: JobManager и TaskManager. Кластер может включать несколько JobManager-ов, из которых активным является только один, а остальные выполняют роль резервных для обеспечения отказоустойчивости, а также несколько TaskManager-ов, которые работают одновременно, повышая общую производительность системы.
Каждый обработчик, или «задание потоковой обработки» (Job), делится на шаги (Task). Job управляется JobManager-ом, а Task-и выполняются на TaskManager-ах.
Apache Flink поддерживает концепцию «параллелизма»: если запустить Job с уровнем параллелизма больше 1, обработка будет выполняться в несколько потоков, что значительно увеличивает производительность.

При использовании Apache Flink в чистом виде или при реализации логики обработки внутри систем-участников требуется отдельно кодировать каждое преобразование, привлекать ресурсы разработки, проводить пересборку системы, тестирование и внедрение новой версии ПО.
Наше решение устраняет эти сложности за счёт универсального потокового обработчика, который представляет собой Job Apache Flink, способный принимать логику работы в виде конфигурации, распознавать её и выполнять на указанных потоках данных.
Логика обработки задаётся через конфигурационные файлы, что исключает необходимость написания кода. Для конфигурирования мы разработали упрощённый скриптовый язык (DSL), доступный даже пользователям с минимальной алгоритмической подготовкой.
Конфигурации оформляются в виде файлов, и после их создания всё, что нужно сделать для развертывания обработки - это запустить универсальный обработчик с этой конфигурацией.
EVPC#
Компонент представляет собой тот же самый универсальный потоковый обработчик, адаптированный для работы в среде Kubernetes и других платформ, основанных на нём.
Установка возможна только в контейнеризированной среде.
Pod обработчика функционально аналогичен Job Apache Flink и настраивается с помощью конфигурации, которая передаётся при запуске.
Помимо DSL, также можно выполнять расширенное конфигурирование с использованием языка JavaScript, что предоставляет более подготовленным пользователям расширенные возможности настройки логики обработки.

Обработчик поддерживает нативное подключение к транспорту на основе Apache Kafka.
Для подключения к другим типам транспорта, таким как RabbitMQ или Apache ActiveMQ Artemis, используется адаптер EVTA.
Кроме того, EVTA может выступать в роли egress-шлюза, что особенно полезно в инсталляциях, где требуется использование Istio.
EVPT#
Компонент представляет собой вспомогательный инструмент для работы с таймерами, который принимает REST-запросы для установки таймеров и выполняет указанный REST-вызов по истечении заданного времени.
Установка сервиса возможна как на виртуальных машинах, так и в контейнерах. Сервис поддерживает два режима работы: персистентный, с хранением заданий в базе данных на основе PostgreSQL, и неперсистентный, с хранением заданий в оперативной памяти.
В рамках потоковой обработки EVPT используется для отсчёта окон агрегации в облачном потоковом обработчике EVPC, где он разворачивается в Kubernetes. При необходимости EVPT может быть использован вне контекста потоковой обработки в качестве самостоятельного планировщика задач.