2017-09-16 107 views
0

我對Akka聚類和研究概念證明非常陌生。在我的情況下,我有一個在羣集上運行的演員,演員的狀態爲Map [String,Any]。因此,對於任何請求,actor根據傳入的消息接收它,它會創建一個新的實體actor和數據映射。這裏的問題是地圖現在在內存中。是否有可能在Redis或點燃某個地方存儲Sharded actor狀態?如何將akka sharded actor狀態外部化爲redis或ignite?

回答

0

你應該先看看akka-persistence(包含在akka中的持久化模塊)。快照部分旨在直接保持狀態,但您必須從命令/事件源部分開始,快照部分是可選的增強部分。

然後,您可以將此功能與您的分片演員在某個不活動超時後自動鈍化相結合。

有了以上這些,您將擁有一個解決方案,可以讓您的演員在外部存儲系統中保持狀態,釋放內存,恢復演員的狀態。

最後一步是查看哪些存儲後端可用於akka持久性並符合您的要求,當然可以實現您自己的要求。