Event Sourcing — это архитектурный паттерн, при котором состояние системы не сохраняется напрямую, а восстанавливается путем воспроизведения последовательности событий. Каждое событие отражает изменение в системе и сохраняется в неизменяемом журнале событий (event log).

Принципы:

  • Неизменяемость событий. Каждое событие записывается единожды и не подлежит изменению.
  • Воспроизведение событий. Текущее состояние объекта вычисляется путем последовательного применения событий, начиная с исходного состояния.
  • Хранилище событий. Все события хранятся в базе данных, которая может быть оптимизирована для их последовательной записи.

Преимущества:

  • Аудит и прозрачность. Хранилище событий предоставляет полный лог изменений, что упрощает аудит и диагностику.
  • Производительность и масштабирование. Увеличение производительности за счет использования хранилища событий и построения проекций для чтения.
  • Восстановление состояния. Легкость восстановления системы после сбоя путем проигрывания всех событий.
  • Возможности для анализа. Хранилище событий может использоваться для ретроспективного анализа данных.

Ограничения:

  • Усложнение системы. Требуется дополнительная логика для обработки событий, создания проекций и управления хранилищем событий.
  • Версионирование событий. Необходимость в управлении версиями событий при изменении их структуры.
  • Увеличение объема данных. Хранение всех событий может привести к быстрому росту объема данных.
  • Задержка восстановления состояния. При большом числе событий восстановление состояния может занимать много времени.

Применение:

  1. Финансовые системы. Для учета транзакций и обеспечения полного логирования операций.
  2. E-commerce. Хранение всех изменений корзины пользователя или заказов.
  3. IoT. Сохранение событий от датчиков для анализа в реальном времени или ретроспективы.
  4. Паттерн CQRS. Часто используется совместно с Event Sourcing для разделения операций чтения и записи.

Мета информация

Область:: 00 Архитектура ИС
Родитель:: Архитектурный паттерн
Источник::
Создана:: 2024-12-02
Автор::

Дополнительные материалы

Дочерние заметки