我可以在Akka.NET中保存整个Actor系统的状态吗?

时间:2017-10-25 11:11:02

标签: c# akka akka.net akka.net-persistence

我一直在阅读并研究Akka.NET,并认为它非常适合我将要开发的非常基本的在线多人游戏。

我对Akka.NET中的Persistence模块特别感兴趣。我希望能够做的是在任何时间拍摄我的整个Actor系统的快照,并在我选择的时间恢复快照(基本上是游戏状态的保存/加载机制)。这种保存和加载Actor持久性似乎很自然地发生,而我希望手动快照系统的当前状态并在我选择的时候恢复。

Akka.NET持久性是否可以实现这种情况?

1 个答案:

答案 0 :(得分:0)

Akka.NET持久性使用event sourcing作为持久化和重新创建actor状态的方法。它还支持创建完整当前状态的快照,但这应被视为性能最优化,不能单独使用。还要注意,持久性适用于每个actor。你不能将整个系统冻结成一种状态。

但是,您可以做的是:您实现持久性,但永远不会持久存在任何事件。然后,您向顶级actor发送消息,其中显示“SaveSnapshotRecursive”之类的内容。接收该消息的所有参与者将保存快照并将消息转发给他们的孩子(他们还应该在快照中记录他们当前孩子的列表)。如果您愿意,此快照存储可以基于文件,您可以随时使用它来恢复完整状态。

相关问题