我正在評估Akka的項目,並試圖通過將演員狀態保存在高可用數據中來確定是否可以通過Akka-Persistence實現服務的高可用性商店。 (我不是indending使用Akka集羣)如何在崩潰後重新創建動態創建的持久性AKKA演員
我理解保存演員國家的概念,但我很努力找到一種方法來重新創建演員(不是演員國家)恢復我的失敗(墜毀)服務在備份主機上。
在我的設計中,有很多動態創建的角色,只有少數是在服務啓動時創建的。
如何找出在恢復時需要創建的演員?或者我想做一些根本性錯誤?
我正在評估Akka的項目,並試圖通過將演員狀態保存在高可用數據中來確定是否可以通過Akka-Persistence實現服務的高可用性商店。 (我不是indending使用Akka集羣)如何在崩潰後重新創建動態創建的持久性AKKA演員
我理解保存演員國家的概念,但我很努力找到一種方法來重新創建演員(不是演員國家)恢復我的失敗(墜毀)服務在備份主機上。
在我的設計中,有很多動態創建的角色,只有少數是在服務啓動時創建的。
如何找出在恢復時需要創建的演員?或者我想做一些根本性錯誤?
我認爲你的問題並不精確。例如,你問How can I find out what actors I have to create upon recovery?
......我們怎麼知道?只有你知道你的系統中存在哪些角色。爲什麼不重新啓動它們?只有你似乎知道爲什麼它不合適,但你沒有告訴我們爲什麼,所以我們不能幫助很多。
這就是說,我會嘗試做一些猜測並提出一種前進的方法。
,我要做的第一猜測是:
如果這是正確的,請繼續閱讀...否則請檢查您的問題。
請考慮which actors are running now
是您系統狀態的一部分。用下面的事件狀態變化:
你可以有一個持續的演員管理該狀態,更新它,當上述事件發出。
您應該將該actor添加到始終在服務啓動時啓動的那些列表。
當該演員的重放完成(它將接收RecoveryCompleted
消息:http://doc.akka.io/docs/akka/current/scala/persistence.html#recovery-status),你會重建which actors are running now
狀態。然後,您必須根據狀態動態重新創建所有這些角色。
偉大的問題 - 我認爲akka文檔缺少關於如何處理容錯的巨大部分(akka文檔中的容錯僅僅意味着演員拋出異常)。 – tonicsoft