Event Sourcing — это архитектурный паттерн, при котором состояние системы не сохраняется напрямую, а восстанавливается путем воспроизведения последовательности событий. Каждое событие отражает изменение в системе и сохраняется в неизменяемом журнале событий (event log).
Принципы:
- Неизменяемость событий. Каждое событие записывается единожды и не подлежит изменению.
- Воспроизведение событий. Текущее состояние объекта вычисляется путем последовательного применения событий, начиная с исходного состояния.
- Хранилище событий. Все события хранятся в базе данных, которая может быть оптимизирована для их последовательной записи.
Преимущества:
- Аудит и прозрачность. Хранилище событий предоставляет полный лог изменений, что упрощает аудит и диагностику.
- Производительность и масштабирование. Увеличение производительности за счет использования хранилища событий и построения проекций для чтения.
- Восстановление состояния. Легкость восстановления системы после сбоя путем проигрывания всех событий.
- Возможности для анализа. Хранилище событий может использоваться для ретроспективного анализа данных.
Ограничения:
- Усложнение системы. Требуется дополнительная логика для обработки событий, создания проекций и управления хранилищем событий.
- Версионирование событий. Необходимость в управлении версиями событий при изменении их структуры.
- Увеличение объема данных. Хранение всех событий может привести к быстрому росту объема данных.
- Задержка восстановления состояния. При большом числе событий восстановление состояния может занимать много времени.
Применение:
- Финансовые системы. Для учета транзакций и обеспечения полного логирования операций.
- E-commerce. Хранение всех изменений корзины пользователя или заказов.
- IoT. Сохранение событий от датчиков для анализа в реальном времени или ретроспективы.
- Паттерн CQRS. Часто используется совместно с Event Sourcing для разделения операций чтения и записи.
Мета информация
Область:: 00 Архитектура ИС
Родитель:: Архитектурный паттерн
Источник::
Создана:: 2024-12-02
Автор::