这是在看了lmax架构后的一些想法 我们知道对象是随时间而变化的,每个时段当中的对象就是对象本身在这个时段变化的快照,而domainEvent是作用在某个时段上的一个动作的记录,按照lmax的架构方式是除了要记录每个时段当中作用在对象上的domainEvent外,还需要定时的去为每个对象的某个时段做快照(可以加快回放速度)。举一例子 BankAccount『 存入3$Event 存入4$Event 取出3$Event 快照 存入5$Event 』
以上情况乍看似乎没有什么问题,在单线程处理无非就是顺序处理存入。但在多线程或者分布多进程情况下问题就变复杂化了,考虑的一个重要的问题是,假如由于网络或者机器故障,造成某台操作事件无法及时持久event或者是丢失event,event就造成了断裂。例如
BankAccount『 快照 机器1 存入3$Event 丢失 存入4$Event 机器2 取出3$Event 机器2 存入5$Event 』
那向lmax这种一天一快照的方式,就会造成信息断裂,这时候就算你取到了最近的快照,也无法回放到最新的对象状态。