我正在评估是否使用Akka和akka persistent作为某个项目的关键工具包,其中有一个复杂的后台运行过程(可能由Quartz在每天的固定时间触发)。
后台运行过程将通过HTTP通信与许多不同的外部服务进行通信,将在本地生成许多加密文件,并通过SFTP传输。
从业务角度来看:
从技术角度来看:
我正在阅读官方AkkaScala.PDF和一些YouTube视频会议视频,所有人都提到,演员的状态可以通过在JVM崩溃后重播日志中的事件来恢复。
但这一定是个愚蠢的问题,因为我没有发现它正在讨论中:
想象一下,服务中有1000个持久的演员,服务的JVM崩溃并重新启动,谁应该负责触发在新创建的演员系统中重新创建1000个持久演员。单进程模式和集群模式?如何?或者我应该先阅读哪些文章?
答案 0 :(得分:1)
您应该阅读Akka Persistence
和Akka Persistence Query
的基础知识。但可能,首先我想到的是使用Akka Persistence Query
AllPersistenceIdsQuery or CurrentPersistenceIdsQuery。它将为您提供所有持久性ID,您可以使用它来重新点燃持久性演员。特定persistent id
的持久性演员将重播事件商店日记中的所有事件。您可以snapshots
加快恢复速度。您的事件存储可能是某种数据库(例如Cassandra)。考虑到你的持久化actor具有特定的可变状态,它将在恢复后恢复到其最后状态。恢复可能需要一些时间。