事件溯源与 CQRS 模式深度解析
1. 事件溯源的本质
事件溯源(Event Sourcing)是一个备受关注的话题,有些人从未听说过它,有些人对它深信不疑,还有很多人在不知情的情况下已经运用了多年。理解事件溯源最简单的方法是通过类比,人类的大脑就是一个事件处理系统。大脑的一部分负责接收来自五种感官的刺激,这些事件经过重新排序后被提交到大脑的另一部分,在那里构建出我们所感知的现实。
从数学角度来看,事件溯源可以表示为一个函数,它接收一系列事件并返回一个状态:
f(event, ...) = state
在传统的状态管理方法中,我们通常维护一个内存结构来表示所有状态。刺激到来时,我们按需改变这个状态,很少关注事件顺序或状态是如何改变的。这种模型在大规模应用时会出现问题。
而在事件溯源系统中,每次接收到一个事件,我们可以将其应用到先前计算的状态上,从而产生一个新的状态:
f(state1, event, ...) = state2
2. 事件溯源系统的关键原则
事件溯源系统有一些关键原则,如果不遵循这些原则,事件溯源应用程序可能会变得混乱不堪。
- 幂等性(Idempotent) :事件溯源的业务逻辑必须是幂等的。在真正的事件溯源系统中,对于相同的事件序列, f(e, ...)
始终等于相同的状态。这是事件溯源最绝对的规则,如果要构建