我正在评估Akka的项目,我试图通过在高可用数据存储中保存actors状态来确定是否可以通过Akka-Persistence实现服务的高可用性。 (我不同意使用Akka-Cluster)
我理解了保存一个actor状态的概念但是我正在努力找到一种方法来重新创建演员(而不是演员状态)来恢复我在备份主机上的失败(崩溃)服务。
在我的设计中,有许多动态创建的actor,只有少数是在服务启动时创建的。
如何找出恢复后我必须创建的演员?或者我试图做一些根本错误的事情?
答案 0 :(得分:1)
我认为你的问题不准确。例如,你问How can I find out what actors I have to create upon recovery?
......我们怎么知道?只有您知道系统中存在哪些actor。为什么不重新启动它们?只有你似乎知道为什么它不合适,但你没有告诉我们原因,所以我们无法提供太多帮助。
那就是说,我会尝试做一些猜测并建议一种前进的方法。
我要做的第一个猜测是:
如果那是对的,请继续阅读......否则,请查看您的问题。
考虑which actors are running now
是系统状态的一部分。该状态随以下事件而变化:
你可以让一个持久的actor管理那个状态,在发出上述事件时更新它。
您应该将该actor添加到始终在服务启动时启动的那些actor。
当该演员的重播完成后(它将收到RecoveryCompleted
消息:http://doc.akka.io/docs/akka/current/scala/persistence.html#recovery-status),您将重建which actors are running now
状态。然后,您必须根据状态动态地重新创建所有这些actor。