Event-driven-архитектура (EDA)
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 обеспечивает бесшовную интеграцию, обеспечивает обмен данными и взаимодействие между системами, поскольку события могут потребляться и создаваться различными системами независимо от их базовых технологий и языков программирования.
О недостатках событийно-ориентированной архитектуры читайте в продолжении статьи по ссылке