我对Akka集群非常陌生并致力于概念验证。在我的情况下,我有一个在集群上运行的actor,并且actor的状态为Map [String,Any]。因此,对于任何请求,actor根据传入消息接收它,它创建一个新的实体actor和数据映射。这里的问题是地图现在在内存中。是否可以将分片的actor状态存储在redis中或点燃?
答案 0 :(得分:0)
你应该首先看看akka-persistence(包含在akka中的持久性模块)。快照部分旨在直接保持状态,但您必须从命令/事件源部分开始,快照部分是可选的增强。
然后,您可以将此与在某个不活动超时后自动钝化分片角色结合起来。
通过上述内容,您将拥有一个解决方案,可以将演员的状态保持在外部存储系统中以释放内存,并在演员恢复生机时恢复他们的状态。
最后一步是查看哪些存储后端可用于akka-persistence并符合您的要求,您当然可以实现自己的。