我目前正在为我的 Go Actor 库实现 EventSourcing。我现在遇到的问题是,当参与者重新启动并需要从事件日志中重放它的所有状态时,查询可能会返回不一致的数据。我知道我可以使用MutationToken
但是,如果我这样做,我将被迫按顺序编写所有事件,即最后一个事件写在最后。
这样,最后一个事件的突变标记就足以为特定参与者一致地获取所有数据。
然而,这非常慢,按顺序写入大约 10 000 个事件,我的设置大约需要 5 秒。
如果我改为使用 go 例程编写这 10 000 个异步,我可以在不到一秒的时间内写入所有数据。但是,写入的顺序是不确定的,我可以知道我可以信任哪个突变令牌。例如,由于常规调度 AFAIK,事件 999 可能在事件 843 之前写入。
我在这里有什么选择?