当eventSourceing遇到并发和事务将变得复杂
据个例子:有个 仓库 共享对象
仓库『
events
addEvent
』
A 线程 处理一个事务(里面会用到仓库对象)如果失败需要回滚 如果成功store event to disk
b 线程 处理一个事务(里面也会用到仓库对象)如果失败需要回滚 如果成功store event to disk
这时候如果操作event是顺序存入共享对象的events队列里,那问题将更加的复杂,例如:假设存入在event队列里面的顺序如下
A线程的 event1
B线程的 event3
A线程的 event4
B线程的 event5
这时候A 线程的事务是成功的他需要commint 并 store event 到磁盘
可B线程事务这个时候失败了,这时候事情将变的复杂话。
所以你就会发现这种设计最理想的是single-write规则,假如想多加入处理器的话,共享事件队列将会让问题变得很复杂。