Проектирование отказоустойчивой аналитики в реальном времени
Вам нужны дашборды с актуальными данными. Они должны оставаться точными по мере роста системы. Event sourcing решает эту задачу.
Схема работы:
- Producers: Сервисы отправляют доменные события.
- Event Bus: Kafka или Kinesis сохраняют события в логе.
- Processors: Они читают лог и обновляют модели чтения (read models).
- Read Models: Postgres или Redis хранят итоговые метрики.
- Query API: Ваш дашборд забирает данные отсюда.
Ключевые правила проектирования:
- Делайте события неизменяемыми. Никогда не обновляйте событие.
- Используйте ключи идемпотентности. Это предотвращает появление дубликатов данных.
- Версионируйте схемы. Это предотвращает поломки системы.
- Используйте детерминированные проекции. Это обеспечивает согласованность данных.
Как это реализовать:
- Определите ключевые события.
- Выберите инструменты хранения.
- Создайте начальные проекции для метрик.
- Реализуйте дедупликацию.
- Создайте реестр схем (schema registry).
- Отслеживайте задержку событий (event lag).
Такая архитектура позволяет масштабировать систему и проводить аудит данных. Вы сохраняете полную историю каждого изменения.