Событийно-ориентированная архитектура (EDA) — подход, при котором компоненты системы взаимодействуют с помощью событий: сообщения о произошедших изменениях или действиях. Система состоит из генераторов событий (producers), обработчиков (consumers) и шины сообщений (message bus, broker), которая доставляет события.
EDA позволяет создавать гибко масштабируемые, слабо связанные системы. Изменение в одном компоненте не требует модификации других: только генерация и обработка событий.
Пример кода (генерация и обработка событий на Node.js):
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // Обработчик события emitter.on('userCreated', (user) => { console.log('Пользователь создан:', user); }); // Генерация события emitter.emit('userCreated', { id: 1, name: 'Ivan' });
Ключевые особенности:
Является ли EDA противоположностью микросервисной архитектуры?
Нет, это не противоположности. Микросервисы часто используют EDA для коммуникации между сервисами.
Можно ли использовать EDA только с брокерами сообщений?
Не обязательно. Локальные события (например, через паттерн Observer) тоже реализуют EDA, но брокеры позволяют строить распределённые системы.
Гарантирует ли EDA неизменяемость данных?
Нет. EDA — о взаимодействии компонентов; устойчивость к повторной обработке (idempotency) и согласованность данных нужно реализовывать явно.