Event-driven-архитектура (EDA)

02 октября 2023

Cобытийно-ориентированная архитектура — это шаблон архитектуры, позволяющий в реальном времени обнаруживать, обрабатывать, управлять и реагировать на события. В терминологии EDA событие — это действие, инициирующее уведомление либо изменение в состоянии приложения.

Типичный пример — видеоигра: приложение откликается на щелчки мыши или выбор меню.

Как работает EDA

Событийно-ориентированная архитектура состоит из трех ключевых компонентов: производителей событий, брокеров и получателей. Производители генерируют поток событий и отправляют брокеру. Он фильтрует и направляет события соответствующим потребителям. События доставляются в реальном времени, что позволяет получателям реагировать на них по мере их появления.

В событийно-ориентированной архитектуре производители и получатели сообщения отделены друг от друга. То есть производитель не знает, какие получатели принимают события, а пользователи не знают, какие производители их генерируют. Такое разделение позволяет независимо масштабировать, обновлять и развертывать производителей и получателей.

При этом путь сообщения может быть довольно сложным: ему необходимо взаимодействовать со множеством приложений, написанных на разных языках, использующих разные API и протоколы передачи данных.

Существуют две распространенные модели доставки событий в EDA: pub/sub и потоковая передача. В модели pub/sub инфраструктура обмена сообщениями отслеживает подписки и отправляет события каждому подписчику. В модели потоковой передачи события записываются в лог событий, а получатели могут читать их из любой части потока.

Event-driven-архитектура обеспечивает гибкость, масштабируемость и отказоустойчивость, что делает ее подходящей для современных приложений со сложными рабочими процессами, обработкой событий в реальном времени и интеграцией на основе событий.

Примеры использования событийно-ориентированной архитектуры

У event-driven-архитектуры широкий спектр использования: от игр и интернет-магазинов до IoT и бизнес-приложений. 

Обработка заказов онлайн-магазина

В момент размещения заказа пользователем запускается событие, инициирующее работу со складскими запасами, обработку платежей и координацию доставки.

Сбор данных интернета вещей (IoT)

IoT-устройства генерируют события, передавая их на различные платформы.

Регистрация и аутентификация пользователей

После входа в систему или регистрации пользователя запускаются события для проверки учетных данных, обновления профиля и предоставления доступа к системным ресурсам.

Система оповещения

События запускаются при выполнении определенных условий, например: получение новых сообщений, назначение задач, уведомление пользователей по электронной почте, через SMS или push.

Аналитика в реальном времени

События запускаются при получении потоков данных, что позволяет осуществлять непрерывный анализ и генерировать данные, например, мониторить трафик веб-сайта или обнаруживать мошеннические действия.

Управление рабочим процессом

События запускаются после выполнения задачи или достижения контрольной точки, ускоряя рабочий процесс и обеспечивая бесперебойную совместную работу и автоматизацию.

Микросервисы, управляемые событиями

События используются для взаимодействия между множеством микросервисов, что позволяет создавать слабосвязанные и легко масштабируемые системы.

Преимущества event-driven-архитектуры

Событийно-ориентированный подход имеет большой список достоинств. Ниже самые существенные. 

  • Слабая связанность и масштабируемость

EDA способствует слабой связанности между компонентами систем, отделяя их с помощью событий. В event-driven-архитектуре компоненты взаимодействуют посредством асинхронных сообщений о событиях, что позволяет разрабатывать, развертывать и масштабировать их независимо друг от друга. 

  • Обработка событий в реальном времени

EDA обеспечивает обработку и реагирование на события в реальном времени, по мере их возникновения. Event-driven-архитектура особенно хорошо подходит там, где обработка данных в реальном времени и оперативность реагирования критически важны, например, в финансовых системах, IoT-приложениях или при мониторинге.

  • Надежность и отказоустойчивость

Повышается надежность и отказоустойчивость систем за счет использования событийно-ориентированной коммуникации. События могут регистрироваться и храниться в долговременном хранилище, что позволяет обрабатывать ошибки, восстанавливать и воспроизводить события. 

  • Бесшовная интеграция с разнородными системами

EDA обеспечивает бесшовную интеграцию, обеспечивает обмен данными и взаимодействие между системами, поскольку события могут потребляться и создаваться различными системами независимо от их базовых технологий и языков программирования.

Недостатки событийно-ориентированной архитектуры

При своих весомых преимуществах EDA имеет и определенные недостатки.

Сложность

Event-driven-архитектура создает дополнительную сложность по сравнению с традиционными монолитными архитектурами.

Упорядочивание событий

Правильный порядок событий может быть необходим в определенных сценариях использования, таких как финансовые транзакции, и требует тщательной разработки и реализации, что может оказаться сложной задачей.

Согласованность событий

В распределенных системах непросто обеспечить согласованность событий между несколькими сервисами или компонентам. Вдобавок поддержание целостности данных и обеспечение корректного обновления всех соответствующих систем в ответ на события может оказаться трудной задачей.

Отладка и устранение неисправностей

Выявление и диагностика проблем в системе, управляемой событиями, может быть трудной задачей по сравнению с системами «запрос — ответ». События могут вызывать ряд реакций в различных компонентах, что затрудняет отслеживание потока и выявление первопричины проблем.

Применение event-driven подхода

EDA используется в системах Business Rules Engine (BRE). BRE-платформы в реальном времени реагируют на события согласно заданным политикам принятия решений. При этом сами события могут касаться чего угодно: правового регулирования, отношений с клиентами, финансов и многих других аспектов деятельности организации. Вот простой пример условия для реагирования на событие согласно заданной политике: все клиенты, единовременно потратившие не менее $100, получают скидку 10%.

Основные преимущества BRE-платформ — это улучшенный комплаенс, автоматизация маркетинговых или других повторяющихся задач и, как следствие, снижение числа ошибок.

Заключение

В целом событийно-ориентированная архитектура (EDA) обеспечивает гибкость, масштабируемость и отказоустойчивость, что позволяет организациям разрабатывать и развертывать надежные системы.

Загрузка