4

私は Akka の初心者ですが、Actors、Agents、Futures など、Akka が提供する非同期プログラミング用の機能の多くを楽しんでいます。

Akka の強力なセールス ポイントは、アクターがクラッシュすると、同等のアクターがアクター システムによって新たに作成され、古いものの代わりにプラグインされるため、強力な安定性が保証されるという事実です。

他のいくつかのシステム (JMS はその 1 つだと言われています) はさらに一歩進んで、アクター間で送信されるメッセージを継続的に永続化します。このようにして、たとえばハードウェア障害が原因でマシンが物理的にクラッシュした場合でも、障害が発生する前の状態に復元することができます。

これは、私が現在開発しているアプリケーションにとって非常に魅力的です。Akka はそのようなメカニズムを提供していますか? そうでない場合、これを実現できるように外部システムと統合する方法はありますか?

4

2 に答える 2

10

はい、あなたが説明したことは、耐久性のあるメールボックスを使用して実現できます。必要に応じて、アクターごとに構成できます。

さまざまなバックエンドの実装がいくつかあります。お気に入りのメッセージ キューの実装が見つからない場合でも、独自のアダプターを実装するのはそれほど難しくありません。Akka ソース ツリー内で維持する唯一の実装は、FileBasedMailboxそれを行う方法のテンプレートとして機能する です。Akka 2.0.x ディストリビューションに含まれていたその他のメールボックス タイプは、それぞれの「所有者」によってコミュニティ プロジェクトとして維持されています。

于 2012-10-05T23:05:51.280 に答える
5

耐久性のあるメールボックスは、メッセージを選択的に保存するための優れた方法であり、Akka は JMS と同様のことを実現できます。テクノロジーに加えて、システムに関連するメッセージと、システム障害後に状態を復元する方法をアーキテクチャ レベルで検討することが非常に重要です。

アクター パラダイムとうまく連携する 1 つの方法は、イベント ソーシングです。この概念では、アプリケーションの状態は状態そのものではなく、一連のイベントとして保存されます。システムまたはその一部に障害が発生した場合、永続的なイベント ストアからすべてのイベントを適用することで状態を復元できます。耐久性のあるメールボックスは、そのようなイベント ストアへのリンクにするか、専用のアクターを直接使用することができます。

Martin Krasser は、このブログで、Akka を使用したこのアプローチについて説明している非常に優れた記事を書いています。彼はeventsourcedという名前の Akka のイベント ソーシング拡張機能の作成者でもあります。

于 2012-10-05T23:34:19.573 に答える