44 lines
4.1 KiB
Markdown
44 lines
4.1 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
tags:
|
|||
|
- maturity/🌱
|
|||
|
date: 2024-12-02
|
|||
|
---
|
|||
|
Event Sourcing — это [[архитектурный паттерн]], при котором состояние системы не сохраняется напрямую, а восстанавливается путем воспроизведения последовательности событий. Каждое событие отражает изменение в системе и сохраняется в неизменяемом журнале событий (event log).
|
|||
|
|
|||
|
**Принципы:**
|
|||
|
- **Неизменяемость событий**. Каждое событие записывается единожды и не подлежит изменению.
|
|||
|
- **Воспроизведение событий**. Текущее состояние объекта вычисляется путем последовательного применения событий, начиная с исходного состояния.
|
|||
|
- **Хранилище событий**. Все события хранятся в базе данных, которая может быть оптимизирована для их последовательной записи.
|
|||
|
|
|||
|
**Преимущества:**
|
|||
|
- **Аудит и прозрачность**. Хранилище событий предоставляет полный лог изменений, что упрощает аудит и диагностику.
|
|||
|
- **Производительность и масштабирование**. Увеличение производительности за счет использования хранилища событий и построения проекций для чтения.
|
|||
|
- **Восстановление состояния**. Легкость восстановления системы после сбоя путем проигрывания всех событий.
|
|||
|
- **Возможности для анализа**. Хранилище событий может использоваться для ретроспективного анализа данных.
|
|||
|
|
|||
|
**Ограничения:**
|
|||
|
- **Усложнение системы**. Требуется дополнительная логика для обработки событий, создания проекций и управления хранилищем событий.
|
|||
|
- **Версионирование событий**. Необходимость в управлении версиями событий при изменении их структуры.
|
|||
|
- **Увеличение объема данных**. Хранение всех событий может привести к быстрому росту объема данных.
|
|||
|
- **Задержка восстановления состояния**. При большом числе событий восстановление состояния может занимать много времени.
|
|||
|
|
|||
|
**Применение:**
|
|||
|
1. **Финансовые системы**. Для учета транзакций и обеспечения полного логирования операций.
|
|||
|
2. **E-commerce**. Хранение всех изменений корзины пользователя или заказов.
|
|||
|
3. **IoT**. Сохранение событий от датчиков для анализа в реальном времени или ретроспективы.
|
|||
|
4. Паттерн [[../../../../knowledge/dev/архитектура/паттерн/CQRS|CQRS]]. Часто используется совместно с Event Sourcing для разделения операций чтения и записи.
|
|||
|
***
|
|||
|
## Мета информация
|
|||
|
**Область**:: [[../../meta/zero/00 Архитектура ИС|00 Архитектура ИС]]
|
|||
|
**Родитель**:: [[Архитектурный паттерн]]
|
|||
|
**Источник**::
|
|||
|
**Создана**:: [[2024-12-02]]
|
|||
|
**Автор**::
|
|||
|
### Дополнительные материалы
|
|||
|
-
|
|||
|
|
|||
|
### Дочерние заметки
|
|||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
|||
|
|