我正在评估Akka的项目,并试图通过将演员状态保存在高可用数据中来确定是否可以通过Akka-Persistence实现服务的高可用性商店。 (我不是indending使用Akka集群)如何在崩溃后重新创建动态创建的持久性AKKA演员
我理解保存演员国家的概念,但我很努力找到一种方法来重新创建演员(不是演员国家)恢复我的失败(坠毁)服务在备份主机上。
在我的设计中,有很多动态创建的角色,只有少数是在服务启动时创建的。
如何找出在恢复时需要创建的演员?或者我想做一些根本性错误?
我正在评估Akka的项目,并试图通过将演员状态保存在高可用数据中来确定是否可以通过Akka-Persistence实现服务的高可用性商店。 (我不是indending使用Akka集群)如何在崩溃后重新创建动态创建的持久性AKKA演员
我理解保存演员国家的概念,但我很努力找到一种方法来重新创建演员(不是演员国家)恢复我的失败(坠毁)服务在备份主机上。
在我的设计中,有很多动态创建的角色,只有少数是在服务启动时创建的。
如何找出在恢复时需要创建的演员?或者我想做一些根本性错误?
我认为你的问题并不精确。例如,你问How can I find out what actors I have to create upon recovery?
......我们怎么知道?只有你知道你的系统中存在哪些角色。为什么不重新启动它们?只有你似乎知道为什么它不合适,但你没有告诉我们为什么,所以我们不能帮助很多。
这就是说,我会尝试做一些猜测并提出一种前进的方法。
,我要做的第一猜测是:
如果这是正确的,请继续阅读...否则请检查您的问题。
请考虑which actors are running now
是您系统状态的一部分。用下面的事件状态变化:
你可以有一个持续的演员管理该状态,更新它,当上述事件发出。
您应该将该actor添加到始终在服务启动时启动的那些列表。
当该演员的重放完成(它将接收RecoveryCompleted
消息:http://doc.akka.io/docs/akka/current/scala/persistence.html#recovery-status),你会重建which actors are running now
状态。然后,您必须根据状态动态重新创建所有这些角色。
伟大的问题 - 我认为akka文档缺少关于如何处理容错的巨大部分(akka文档中的容错仅仅意味着演员抛出异常)。 – tonicsoft