2

これは akka 永続性をローカル データベースとして使用することをお勧めしますか? サーバーにアクセスできない場合に備えてデータをローカルに保存する必要があり、私のアプリは akka の上に構築されているため、akka-persistence を使用するのが最も簡単な方法のように思えます。

データは、平均で 10 秒あたり約 1 レコードの割合で埋められます。それでも、akka-persistence が少し異なる目的のために設計されていることを考えると、それは誤用のように思えます。知っておくべき問題はありますか?

4

1 に答える 1

1

まず、 akka-persistenceの目的を見てみましょう。

Akka の永続性により、ステートフル アクターは内部状態を保持できるため、アクターの起動時、JVM クラッシュ後またはスーパーバイザーによる再起動時、またはクラスターでの移行時に回復できます。Akka 永続化の背後にある重要な概念は、アクターの内部状態への変更のみが永続化され、現在の状態が直接永続化されることはないということです [...]

「誤用」かどうかという問題は、保存されたデータがアクターの内部状態の一部であるかどうかです。投稿からは、これは完全には明らかではありませんが、単に着信メッセージを保存するだけです。これは、適切なメッセージ キューを使用する方がよい場合があります。

データを保存する理由は?Akka の永続性には、元は利用できなかったデータベースと同じか依存している可能性がある、基礎となるデータストアが必要です。ただし、データベースが一度に長時間使用できない限り、10 秒ごとに 1 つのメッセージはひどいものではありません。

また、ローカル バッファを導入するだけでは、信頼性の低いリソースに対処するには不十分な場合があることにも注意してください (サーキット ブレーカー パターンを参照してください)。「フロー」の状態をプロデューサに通知するバックプレッシャーを提供するメカニズムを持つことは、常に検討する価値があります。次に、何をすべきかについて情報に基づいた選択を行うことができます (ドロップ、ストア..)。

処理できない場合にデータをローカルに保存しますが、より適切な解決策がある可能性があるため、そうする場合は上記の懸念事項を考慮する必要があります。

于 2016-01-28T12:50:11.843 に答える