は、私は以下のように説明した非常に簡単な言葉にすることができ、システム、開発しています:Javaを使用した分散コンピューティング。最善のアプローチ?
- は、複数のサーバがありますが、それぞれが(スケーラビリティのために)同じJavaアプリケーションを実行しています。
- 各アプリケーションサーバーが通話する共通のデータベースサーバーがあります。
- それぞれが1つのランダムなサーバーに接続する数百万のクライアント。各クライアントには、1つのサーバーを持つ1つのオープンソケットがあります。この種の問題のための最善のアプローチは何ですか?
今、クライアントAがサーバーAに接続されている、と言うと、クライアントBにメッセージを送信したい
どのクライアントがどのサーバーに接続されているかを追跡する最良の方法と、サーバーを互いに通信させる方法。
これはJava固有の問題です。サーバーが1つしかない場合は、スレッド間通信によって実行されている可能性があります。しかし、問題は複数のサーバーです。また、この作業を容易にするオープンソースライブラリがありますか?
のような既存のjava実装をチェックアウトすることもできます。どのクライアントがどのサーバに接続されている共通データベースに格納することができます。どのプロセスIDとスレッドIDにクライアントソケットがあり、次にRMIを使ってメッセージを送信します。しかし、より効率的なソリューションはありますか? –
私もこの質問に興味がありました。このためにActiveMQを使用してトピック全体のすべてのサーバーにメッセージを送信し、各サーバーでメッセージを受信するかどうか(ID受信者によって)確認できますか? – komelgman
クライアントをランダムなサーバーに接続するのではなく、そのIPアドレスなどのハッシュ関数によって決定される特定のサーバーに接続するのはなぜですか? – Kru