2.4 KiB
2.4 KiB
title, type, tags, last_updated
| title | type | tags | last_updated | |||
|---|---|---|---|---|---|---|
| Event Sourcing | concept |
|
2026-04-22 |
Definition
事件溯源(Event Sourcing)是一种软件架构模式——不直接存储数据的当前状态,而是将所有状态变更作为不可变事件序列持久化,通过重放事件来重建任意时间点的状态。源自 Martin Fowler 的经典模式。
Core Principles
- 唯一真实来源(Single Source of Truth):事件日志是唯一真实来源,当前状态由事件推导得出,而非直接存储
- 不可变性(Immutability):事件一旦写入,永不修改或删除,只能追加新事件
- 全历史可追溯(Audit Trail):天然具备完整审计日志,可回溯任何历史变更的"为什么"
- 时间旅行调试:任意时刻的状态可精确重建,便于复现 BUG 和分析决策上下文
Event Sourcing vs Traditional State Storage
| 维度 | 传统状态存储 | 事件溯源 |
|---|---|---|
| 存储内容 | 当前状态快照 | 状态变更事件序列 |
| 历史保留 | 通常不保留或有限保留 | 完整保留(无上限) |
| 变更原因 | 通常不记录 | 完整记录每次变更的原因 |
| 回滚能力 | 依赖备份 | 通过反向事件补偿天然支持 |
| 审计合规 | 需额外构建 | 内置,无需额外开发 |
Key Event Types
- Progress:任务向前推进的里程碑事件
- Blocker:阻塞/障碍事件,通常触发状态 → "blocked"
- Decision:关键决策事件,记录决策理由和背景
- Pivot:转向/重大调整事件,记录原因和备选方案
- Completion:完成事件,触发状态 → "completed"
Applications in Project Management
Project State Management 是事件溯源在个人/团队项目管理中的具体应用:
- 用自然语言对话替代手动拖拽看板卡片
- 每句话("完成了X"/"被Y阻塞")作为独立事件持久化
- 当前状态由事件序列自动推导,无需手动维护
- 查询"项目为什么这样"等同于"重放这个项目的所有事件"
Connections
- Project State Management ← uses ← Event Sourcing
- Centralized Logging ← related_to ← Event Sourcing(集中日志可视为事件溯源的一种实现)
- Kanban ← alternative_to ← Event Sourcing(冲突:可视化协作 vs 自动追踪+上下文保留)