JVM 崩溃后谁负责 re-create 个持久性 actor 实例?

Who is in charge of re-create persistant actor instance after JVM crash?

我正在评估是否使用Akka和akka persistent作为某个项目的关键工具包,其中有一个复杂的后台运行进程(可能每天固定时间由Quartz触发)。

back-ground运行进程将通过HTTP通信与许多不同的外部服务进行通信,将在本地生成许多加密文件,并通过SFTP传输。

从业务角度:

技术角度:

我正在阅读官方 AkkaScala.PDF,还有一些 youtube 会议视频,他们都提到,在 JVM 崩溃后,可以通过重播日志中的事件来恢复 actor 的状态。

但这一定是个愚蠢的问题,因为我没有发现有人在讨论它:

假设服务中有1000个持久化actor,服务的JVM崩溃重启,谁负责触发re-create新创建的actor中的那1000个持久化actor单进程模式和集群模式下的系统?如何?或者我应该先阅读哪些文章?

您应该阅读 Akka PersistenceAkka Persistence Query 的基础知识。但可能,我首先想到的是使用 Akka Persistence Query AllPersistenceIdsQuery or CurrentPersistenceIdsQuery。它会给你所有的持久性 ID,你可以用它来重新点燃你的持久性演员。特定 persistent id 的持久性参与者将重播事件存储日志中的所有事件。你可以服用snapshots来加速恢复。您的事件存储可能是某种数据库(例如 Cassandra)。考虑到您的持久性 actor 具有特定的可变状态,它将在恢复后恢复到其最后的状态。恢复可能需要一些时间。