問題タブ [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.
akka - NAT の背後にある akka クラスター ノード (Docker を使用)
NAT の背後で akka ノードを実行することは可能ですか (各ノードは個別の nat の背後にあり、パブリック ポートはプライベートに DNAT されます)? 現在、docker コンテナーに akka ノードをデプロイしようとしています。Docker はパブリック ポートをインスタンスのプライベート ポートに Natting します。問題は、akka ノードのアドレスが akka.remote.netty.tcp.hostname から作成されることですが、nated 環境では、公開されているホスト名とは異なります。akka がプライベート IP にバインドされているため、パブリック インターフェイスからのメッセージは拒否されます。akka.remote.netty.tcp.hostnameを尊重せずにakkaノードのアドレスを変更することは可能ですか?現在のノードのアドレスがakka.tcp://ClusterSystem@172.16.10.5:2551であるとしましょう。ここで、172.16.10.5はakka.remote.nettyです。 .tcp.hostname ですが、これを akka.tcp://ClusterSystem@10.2.0.222:2551 に変更したいのですが、10.2.0.222 はパブリック アクセス可能なアドレスですが、akka は 172 でリッスンしている必要があります。
akka - Akka でのクラスタリングとリモーティングの違い
単一の JVM で Akka を使用してアプリケーションを開発しました。ここで、ワークロードを多くのマシンに分散したいと考えています。ドキュメントを読み始めて混乱しました。
Akka アプリをクラスタリングとリモーティングで配布する方法は 2 つあります。両者の違いがわかりません。私が正しく理解している場合、構成ではアクター参照に別のプロバイダーを使用する必要があるため、両方が相互に除外されています。
では、ユースケースは何ですか?どちらかを選択するのはいつですか?
クラスタリングはリモーティングのスーパーセットのようなものでしょうか、それともその逆でしょうか?
akka - Akka アプリケーションでの JMX 監視/統計
クラスタ MBean 以外に、Akka (Java) で有効にできる組み込みの JMX 公開モニタリング/統計はありますか? Typesafe Console を見てきましたが、複数のノードからデータを収集するために使用するにはライセンスが必要なので、プレーンな JMX で同じことを達成できることを望んでいました。このトピックについて運がなくても、Akka のドキュメントを確認しました。
akka - アクターの送信者がローカルかリモートかをテストする
メッセージの送信者が Akka クラスターのローカル アクターまたはリモート アクターのいずれであったかを判断する必要があります。現在、これを行うために私が見つけた唯一の方法は
より良い方法は何ですか?
私はAkka 2.3を使用しています
更新: 問題を完全に回避する方法がある場合に備えて、なぜこれを行うのかを説明します。
各ノードでは、ルーターが多数のアクターを管理して作業を行います。ワーカー アクターは結果をローカル マスター アクターに送り返し、センダー リファレンスを介して新しいジョブが割り当てられます。また、マスター アクターは定期的に他のノードのマスター アクターに結果を送信し、異なるノードのマスター間でデータがランダムに「混合」されるようにします。リモート アクターからデータが到着した場合、受信マスターは新しい作業の割り当てを試みるべきではありません。これは基本的に、ミキシングを使用したアイランド メソッドの実装です。
scala - 異なるノード/ルーターでの同じルーティング動作
一貫性のあるハッシング グループ ルーターを使用すると、常に同じ登録済みルートにルーティングされることがわかっています。
そこで、いくつかのルートを独自routee-nodes
にpublic-node
使用し、クライアントから到達可能なルーターを使用して、アプリケーションを作成しました。
クライアントがメッセージを送信すると、メッセージは本来あるべきようにルーティングされ、正常に機能します。
今私がやりたいことは、public-nodes
他のすべてと同じ送信/ルーティング動作を提供する独自のルーターを追加することpublic-node
です。
私が言いたいのは、クライアントが、またはにメッセージXYZ
を送信するかどうかは問題ではないということです。常に同じに移動する必要があります。
最初は、akka がデフォルトでこの動作を提供する可能性があると考えていました。理由は次のとおりです。public-node
A
B
C
routee-node
- 私はルーターで
group
はなくpool
ルーターを使用したので、誰もが同じルートを知っています - クラスターノードを注文できることを知りました
したがって、ルートのリストは順序付けられており、異なるルーターが同じキーを同じルートにマップすると仮定しました。しかし、テストの結果、私が間違っていることがわかりました。
では、akka でこの動作を実現する方法はありますか? ありがとう。
scala - Akka リモート コントローラー / ワーカーが切断され隔離される
リモートコントローラーシステム:
コード:
getnodes() はList<Address>
アプリケーション.conf:
リモート ワーカー システム: コード:
remote.conf
エラー: [WARN] [02/11/2014 14:50:26.728] [remote-akka.actor.default-dispatcher-17] [akka://..../system/remote-watcher] 検出された到達不能: [ akka.tcp://remote@192.178.1.100:2553] [INFO] [02/11/2014 14:50:26.728] [remote-akka.actor.default-dispatcher-15] [リモーティング] アドレス [akka.tcp ://remote@192.178.1.100:2553] は現在検疫されており、このアドレスへのすべてのメッセージはデッド レターに配信されます。
playframework-2.0 - Play2 開発モードで Akka システムをシャットダウンする
Akka と Play2 でアプリを開発しています。
初めてplay2 アプリを実行し~run
て GET を作成すると、コントローラーでカスタム アクター システムが作成され、2558 ポートでクラスターが開始されます。
コードに何か変更を加えて別の GET プレイを行うと、想定どおりに再コンパイルされて最初からやり直されますが、2558 ポートが使用され、エラーが発生しますFailed to bind to /127.0.0.1:2558
。
自分のアクター システムのシャットダウンを処理して、play2 でうまく動作させる方法がわかりません。メソッドのGlobalSettings
オブジェクトでそれをやろうとしましたが、うまくいきませんでした。onStop
spring - Akka アクターとクラスタリング - ClusterSingletonManager に問題があります - Start 状態の未処理イベント
私は Akka 2.2.4 を使用するシステムを持っています。これは、多数のローカル アクターを作成し、それらをブロードキャスト ルーターのルートとして設定します。各ワーカーは、渡されたハッシュ範囲に従って、全作業の一部のセグメントを処理します。それはうまくいきます。
ここで、フェイルオーバーのためにこのアプリケーションをクラスター化する必要があります。ハッシュ範囲ごとに1つのワーカーのみが存在する/クラスターでトリガーされるという要件に基づいて、それぞれをClusterSingletonManagerとして設定することは理にかなっているように思えます..しかし、私はそれを機能させるのに問題があります. アクター システムが起動し、ClusterSingletonManager を作成し、以下に引用されているコードのパスをブロードキャスト ルーターに追加しますが、何らかの理由で実際のワーカー アクターをインスタンス化してメッセージを処理することはありません。私が得るのはログメッセージだけです:「未処理のイベント ${my message} in state Start」。私は何を間違っていますか?この単一インスタンス クラスタを起動するために他に何かする必要がありますか? 間違ったアクターにメッセージを送信していませんか?
これが私のakka構成です(デフォルトの構成をフォールバックとして使用しています):
アクターを作成する場所は次のとおりです(Groovyで記述されています):
実際のワーカー アクターにメッセージを送信しようとすると、上記のパスは解決されますか? 現在はありません。私は何を間違っていますか?また、これらのアクターは Spring アプリケーション内に存在し、ワーカー アクターはいくつかの @Autowired 依存関係でセットアップされます。この Spring 統合はクラスター化されていない環境でうまく機能しましたが、クラスター化された環境で気をつけなければならない問題はありますか?
ありがとうございました
参考までに:これは akka-user google グループにも投稿しました。ここにリンクがあります。