尽管我已经深入了解了 NEventStore 上的事务完整性,但我无法理解在连接了许多 NEventStore 实例时 NEventStore 将如何真正扩展。
总结一下我的理解,一个事件被添加到提交中作为未调度,然后它发布到调度程序,然后标记为已调度。
同时,每当您连接 NEventStore 时,它都会查找未分派的事件,然后分派它们并将事件标记为已分派。
但是必须有很短的时间跨度,新事件存储的连接将看到即将(从其他存储)分派的未分派事件。新的事件存储将再次分派事件。
想想这个架构:
Client -> Command Bus -> Command Handler -> EventStore persist -> Dispatch to Event Handlers
如果我们有很多Command Handlers
来处理我们的负载,我们也将持久化许多事件。
如果我们经常处理或创建Command Handlers
,那么许多 EventStore 将被连接起来,并导致调度已经被调度的事件。
我知道调度程序的消费者应该是幂等的,这不是我的问题。我的问题是,在高负载情况下,我们是否会在命令处理程序的消费者上提供不必要的负载?