Akka JVM崩溃后,谁负责重新创建持久参与者实例?

Akka JVM崩溃后,谁负责重新创建持久参与者实例?,akka,akka-persistence,Akka,Akka Persistence,我正在评估是否使用Akka和Akka persistent作为某个项目的关键工具包,其中有一个复杂的后台运行过程(可能由Quartz在每天的固定时间触发) 后台运行进程将通过HTTP通信与许多不同的外部服务通信,将在本地生成许多加密文件,并通过SFTP传输这些文件 从商业角度来看: 这项服务是至关重要的,它将自动从银行卡中收取N百万用户的费用,并帮助他们购买一些基金产品 从技术角度来看: 无论出于何种原因,每个外部服务都可能不可用,例如网络问题,外部服务可能会耗尽其资源(即jdbc连接)

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

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

从商业角度来看:

  • 这项服务是至关重要的,它将自动从银行卡中收取N百万用户的费用,并帮助他们购买一些基金产品
从技术角度来看:

  • 无论出于何种原因,每个外部服务都可能不可用,例如网络问题,外部服务可能会耗尽其资源(即jdbc连接)
  • 由于紧急原因,我们的服务可能会被终止、重新启动、重新部署,或者由于一些意外错误而崩溃
  • 一旦流程在未完成作业的情况下重新启动,则需要使用不同的策略(如重做、确认外部系统业务状态和从某个检查点恢复)优雅地完成它们
我从官方的AkkaScala.PDF和一些youtube会议视频中读到,所有这些视频都提到,JVM崩溃后,演员的状态可以通过重播《华尔街日报》上的事件来恢复

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


假设服务中有1000个持久参与者,服务的JVM崩溃并重新启动,谁应该负责在新创建的参与者系统中以单进程模式和集群模式触发重新创建这1000个持久参与者?怎么做?或者我应该先读哪些文章?

您应该阅读
Akka持久性
Akka持久性查询
的基础知识。但我想到的第一件事可能是使用
Akka持久性查询
。它将为您提供所有持久性id,您可以使用这些id重新激活您的持久性参与者。按特定
持久id的持久参与者将重播事件存储日志中的所有事件。您可以拍摄
快照
,以加快恢复速度。您的事件存储可能是某种数据库(例如Cassandra)。考虑到持久参与者具有特定的可变状态,它将恢复到恢复后的最后状态。恢复可能需要一些时间。

嘿,布兰尼斯拉夫,谢谢你的回复。到目前为止,我阅读了*PersistenceIdsQuery部分,详细的问题是:谁根据PersistenceID创建了actor实例?嘿,Branislav,你能帮我解决另一个问题吗?