複数のマシンクラスタへのJVMのデプロイ

複数のマシンクラスタへのJVMのデプロイ

ストローでパラメータと用語を検索します。

重要な属性は仮想のためのものJVMですV(少なくともこの質問の文脈では)。JVMマシンクラスタ全体でロードバランシングを実行して独自に分散する方法はJVM

少しこれ:

分散JVM

https://www.cacheonix.org/articles/Distributed-Java-application-on-multiple-JVMs.gif

これにより、アプリケーションは次の内容のみを表示できます。シングル JVM

答え1

私の意見を詳しく説明し、あなたが非常に深いことを考えていないと仮定する...

おそらくこの図を見て、ユーザーはJVM間のいくつかの調整のためにセッション中いつでもバックエンドでJVMと通信できるアプリケーションを使用していると解釈しています。それは一般的に動作する方法ではありません。少なくとも広く使用されているアーキテクチャではそうではありません。

この図は、独立したJVMを持つクラシックな分散環境をほぼ確実に示しています。クライアント(ユーザーアプリケーション)が要求間で状態を維持する必要がある場合(会議)いくつかのオプションがありますが、他のJVMについてはまったく知らないまま、まだJVMを含めます。

これを達成する最も簡単で一般的な方法は、いわゆるロードバランサーを使用することです。固定セッション。簡単に言えば、これは顧客がアイデンティティその後、ロードバランサーはセッション期間中(ユーザーがログアウトするまで)、常にクライアントからの要求を同じJVMにルーティングします。

どういう意味ですか?アイデンティティ?通常、これはユーザーがログインして正常に認証された後に一意のIDが選択され、ユーザーのすべての後続の要求に関連付けられることを意味します。 Webアプリケーション(RESTful APIを使用するアプリケーションなど)の場合、このIDは通常HTTPヘッダーに渡されます。このようなヘッダーを使用すると、ほとんどのロードバランサーがIDを簡単に抽出できます。

あるいは、固定セッションを中断し、セッション状態をデータベースに保存してから、要求を受信するたびにセッションIDを使用して状態を照会するようにJVMに要求できます。これにより、わずかな複雑さとオーバーヘッドが追加されますが、前例がないわけではありません。ただし、JVMはこのモデルでは独立して保持されます。

(クライアントアプリケーションに要求されているすべてのセッション状態を全体的に渡すこともできますが、これには何よりもセキュリティ上の問題があります。)

関連情報