2012-01-30 9 views
1

私は主にJava/GlassFishに興味がありますが、どのプラットフォーム/アプリケーションサーバーにも当てはまると思います。複数のコンポーネントが同じアプリケーションサーバーにデプロイされています

スケーラビリティのために、同じJAR、WARまたはEARの複数のインスタンスを同じGlassFishサーバーにデプロイすることは可能ですか?私がMyApp.earを持っていて、ロード時にスパイクを処理するためにスケールアップする必要があるように見える場合、同じGlassFishサーバー内に2つ以上のMyApp.earのインスタンスを再デプロイできますか?

実用的なですか?

答えて

2

JBoss atleastでも可能ですが、GlassFishでも同じです。しかし、私はスケーリングにどのように役立つでしょうか?単一のサーバー上でパフォーマンスが不足している場合は、GlassFishの構成を調べるだけです。 JVMの設定を微調整して、スパイク負荷を処理できます。

私はあなたが別のサーバー上で実行する必要がありますJavaアプリケーションをスケールすると思います。これは、アプリケーション全体またはその一部で行うことができます。 (例えば、階層アーキテクチャを使用している場合、階層を別のサーバーで実行できる場合は、リファクタリングが必要です)

+0

は、私は心から、2つのインスタンスを展開するとパフォーマンスが向上するであろうことを疑います。パフォーマンスを低下させる可能性が高い:今では、すべてのクラスの2つのコピーがメモリに格納されるため、メモリが制限され、ディスクを頻繁に使用するなどします。複数のコピーは、開発用バージョンとテスト用バージョンのようなものを持つことです。 – Jay

0

私はエンタープライズアーキテクチャーについてよく分かりませんが、同じJVM内のインスタンスしかし、それはうまくスケールされません。分散アーキテクチャーを検討することもできます。

2

これはアプリケーションによって大きく異なります。次の場合には、一般に、モジュールの複数のインスタンスを持つことは問題ではありません。 - それらは同じwarコンテキストを使用せず、 - たとえば、同じJNDI名を使用しないでください。 EJB。

質問は、なぜこれを行うのですか。通常、Java EEアプリケーションとサーバーのスケーリングには2つのオプションがあります。水平および垂直。 水平は、多くの(より小さい)マシン上に複数のapp-serverインスタンスを持つことを指します。 Verticalは、同じ(大きい)マシン上の複数のapp-serverインスタンスを意味します。 Java EEのスケーリングとクラスタリングを調べると、答えは次のようになります。あなたはあなたのアプリケーションを "拡張"(マルチ展開)するつもりはありませんが、あなたはアプリケーションサーバーインスタンスを拡張しようとしています。 GlassFishでのクラスタリングについての優れた紹介記事があります: http://glassfish.java.net/public/clustering31.html トポロジとアーキテクチャを詳しく見てみましょう。

同じアプリを2つ以上のアプリサーバーにデプロイしようとしているのを見たのは、異なるバージョンを同時に実行することを検討しているという唯一の理由です。 GlassFishの「アプリケーションのバージョン管理」機能があります。 http://www.youtube.com/watch?v=lgbr_Hywawc でも、この機能でもパラレルで実行することはできませんが、インスタンスに異なるバージョンを導入することができます。

おかげで、 M

関連する問題