2017-08-31 14 views
1

プロジェクト用にAkkaを評価していますが、Akka-Persistenceでハイアベイラビリティを達成できるかどうかは、格納。クラッシュ後に動的に作成された永続化AKKAアクターを再作成する方法

私はアクターの状態を保存するというコンセプトを理解しましたが、失敗した(クラッシュした)サービスを回復するためにアクター(アクターの状態ではありません)を再作成する方法を見つけるのに苦労しています。バックアップホスト上で実行します。

私の設計では、多くの動的に作成されたアクターが存在し、サービスの起動時に作成されるアクターはわずかです。

復旧時に作成しなければならない俳優を確認するにはどうすればよいですか?あるいは私は何か根本的に間違っていることをしようとしていますか?

+0

偉大な質問 - 私は、akkaのドキュメントはフォールトトレランス(akkaドキュメントのフォールトトレランスは、単に俳優が例外を投げたことを意味する)を処理する方法についての巨大なセクションがないと思う。 – tonicsoft

答えて

1

あなたの質問は正確ではないと思います。例えば、あなたはHow can I find out what actors I have to create upon recovery?と聞いて...どうすればわかるの?あなたのシステム内にどのアクターが存在するかはあなただけが知っています。それらをすべて再起動してみませんか?あなただけがなぜそれが適切ではないかを知っているように見えますが、理由を教えてくれなかったので、私たちはあまり助けないことができます。

しかし、私はいくつかの推測を行い、前進する方法を提案しようとします。私はするつもりです

最初の推測があることです:動的に役者を作成の上

  • 、あなたはまた、動的に終了します。
  • 動的に作成され、クラッシュ時にまだ実行されていたが、すでに終了しているアクターは再起動しないようにしたい。

そうなら、読んでください。そうでなければ、質問を確認してください。

which actors are running nowは、システムの状態の一部であることを考慮してください。次のイベントでその状態変化:

  • は、俳優は俳優が上記のイベントが送出された時に、それを更新し、あなたがその状態を管理する永続的な俳優を持っている可能性が

を終了した動的

  • を開始しました。

    サービス起動時に常に起動されるもののリストにそのアクターを追加する必要があります。

    その俳優の再生が完了すると(RecoveryCompletedメッセージを受信します:http://doc.akka.io/docs/akka/current/scala/persistence.html#recovery-status)、which actors are running nowの状態が再構築されます。状態に基づいてすべてのアクターを動的に再作成するだけです。

  • 関連する問題