Struchkov Mark
701b685334
All checks were successful
continuous-integration/drone/push Build is passing
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) -->
|
||
|