問題タブ [akka-cluster]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Akka クラスター シャーディング: Entry アクターは動的な props を持つことができます
Akka Cluster-Sharding は、Akka ノード全体でステートフルな永続アクターの単一インスタンスを作成する必要があるユース ケースとうまく一致しているようです。
それを構築するために引数を必要とする Entry アクター タイプを持つことが可能かどうかはわかりません。あるいは、エントリー アクターがこの情報を取得する方法を再考する必要があるかもしれません。
ClusterSharding.start
は、すべての Entry アクターを作成するために単一の Props インスタンスを取り込みます。
次に、idExtractor の定義方法に基づいて、メッセージを受信する Entry アクターを解決します。shard のソース コードから、特定の Entry アクター インスタンスの名前として id を使用していることがわかります。
}
代わりに、Entry アクターに、指定された名前でリージョンと accountId を把握させる必要があるようですが、値を直接取得するのではなく、文字列から解析するので、これは少しハッキリしています。これは私の最良の選択肢ですか?
akka - config のルーター スーパーバイザー戦略
構成ファイルでルーターのスーパーバイザー戦略を指定することは可能ですか? すべての例は、プログラムでこれを行う方法を示しています。私のルーターは設定ファイルから設定されています。ルーター構成がファイルにある場合も良いですが、スーパーバイザー戦略はコードで構成されます。
クラスター対応ルーターを使用すると、状況がどのように変化するかという別の質問はありますか? そのような種類のルーターにスーパーバイザー戦略を提供することは可能ですか?
PS。監視に関係のないもう 1 つの質問: コンストラクターのパラメーターをプールされたクラスター対応ルーターのすべてのルートに渡すことは可能ですか?また、可能であればどのようにしますか?
scala - Akka スターター: Maven と IntelliJ IDEA の非同期
いくつかのチュートリアルの後、Akka との独自のチャットを作成して、少し遊んでみたいと思いました。さらに難しいことに、私は Eclipse を数年使用した後、IntelliJ IDEA も取り上げようとしています。
akka-cluster を取得するためのシンプルな POM をセットアップし、自動インポートを有効にし、IDEA をセットアップして Scala をサポートしました (プロジェクトを右クリックし、「フレームワーク サポート」で Scala を有効にします)。作業を開始するために数行のコードを書きました。奇妙なことに、コードは正しくコンパイルおよび実行されますが ("hello, world" を出力して終了します)、IDEA はコードに何か問題があることを報告します (コンパイルの失敗につながると予想されるエラー)。
ここに私のpom.xmlがあります:
コードは次のとおりです。
IntelliJ IDEA は、ActorSystem インポートが使用されていない (使用されている) ことを示し、数行後に ActorSystem.apply を解決できないことを示しています (ただし、コンパイルして正しく実行されるため、何らかの形で解決します)。
さらに、Foo の receive メソッドの右中括弧が強調表示され、Expression of type Unit doesn't conform to expected type BoxedUnit
.
私は何が欠けていますか?よろしくお願いします。
akka - 複数ノードの Akka セッション アクター
現時点では、このアクター セッション管理の実装を 1 つのノードだけで実行しています。
1)SessionManager
すべてのセッションを処理するアクターがいます
2) は次のSessionManagerActor
2 つのメッセージを受信CreateSesion(id)
します。ValidateSesion(id)
3)メッセージSessionManagerActor
を受信すると、次のようなusingメソッドを作成します。CreateSesion(id)
SessionActor
actorFor
context.actorOf(Props(new SesionActor(expirationTime)), id)
4)メッセージSessionManagerActor
を受信すると、既存のものを探し、次のようなメソッドを使用して存在するかどうかを評価します。ValidateSesion(id)
SessionActor
resolveOne
context.actorSelection("akka://system/user/sessionManager/" + id).resolveOne()
そのロジックはうまく機能しますが、複数のノード(クラスター)で同じ動作を実装する必要があります
私の質問は、1 つまたは複数のノードで動作するようにセッション管理動作を実装するために推奨される方法はどれですか?
akka のドキュメントを読んだところakka-remote
、akka-cluster
、akka-cluster-sharding
、akka-cluster-singleton
、akka-distributed-publish-subscribe-cluster
が提供されていますが、どれが適切で最も簡単な方法なのかわかりません。(SessionActors はステートレスであり、クラスター内の任意の場所に配置する必要があることに注意してください。)
architecture - Akka Cluster バックエンドを使用した Playframework Webapp - アーキテクチャ
Play を akka-cluster バックエンドや Cassandra のような NoSql ストアと組み合わせた例はあまり見たことがありません。そのため、このようなシステムの実装には不確実性があります。
設定を抽象的に説明するのではなく、具体的にするために、play と akka が活躍できるクラス全体の問題を表す例を考え出しました。
考慮してください: データベースに支えられた (Cassandra クラスターを使用できます) 遠征アプリで、旅行中に興味のあるポイントをお勧めします。ユーザーには、アカウント、入力設定、およびいくつかの設定があります。旅行履歴などを含む旅行ダッシュボード ビューがあります。計画では、Web アプリに Play と Angular を使用する予定です。Web アプリのほとんどは、データベースからユーザー データと POI データを取得し、ビューをテンプレート化して更新する単純なケースです。ただし、エリア内の POI を計算してランク付けするアルゴリズムにより、akka-cluster とアクター モデルは魅力的なソリューションになります。ユーザー データ (毎日更新) と POI データ (場所によって更新) を入力として必要とし、そのデータに基づいてアルゴリズムを実行します。
概要: - リクエストを処理し、リクエストを満たすためにデータベースに支えられたサービスを呼び出すプレイ フロントエンド (ユーザー データ、テンプレートなどを取得する) - フロントエンド (またはクライアント) からリクエストを取得してポイントをランク付けする akka クラスター バックエンド好み、年齢、履歴などのユーザー データに基づいて、その地域に関心のあるユーザーを特定します。これには、アクターを介したデータベース アクセスも必要です。
議論の一部には、選択したデータストアに最適なものが必ず含まれる場合がありますが、ここでは高レベルのソリューションを示します。
Play は単に「データを取得する」リクエストと「データ x、y、z に基づいて計算を行う」リクエストの両方をバックエンドに転送するだけで、すべてのデータ アクセス義務を akka クラスタに委任します。これにより、マルチテナンシーの混乱が解消されます
再生側でテンプレートにデータストア データを入力するためのすべての基本的なリクエストを保持し、CPU を集中的に使用する計算にのみクラスターを使用します。play フロントエンドは計算リクエストを転送します。これは、両方が cassandra クラスターにアクセスできることを意味します (怖い?)
Play アプリは計算以外のすべてを実行し、Akka-http はクライアント用の計算 API を公開します (Angular、両方のマイクロサービスが同じ cassandra クラスターにアクセスできます)
Akka-httpとangularで遊びをなくして休息サービスにする
レベルが高すぎる質問でしたら申し訳ありません。何かご意見は?
akka - akka クラスター シングルトン プロキシが、リーダー ノードがない場合にアクターを識別できない
2 ノードの akka クラスターを構築しようとしましたが、両方のノードがシード ノードとして構成されています。各ノードでアクターを作成し、以下の方法で配置します。
私が期待していたのは、任意のノードでアクターを作成し、singletonPath を取得している限り、どこにでも配置できることです。ただし、結果は次のとおりです。getActor() は「リーダー」ノードでのみ機能し、他のノードでは識別できません。clusterSingleton について間違った理解をした場合は?