- - PR -
アプリケーションサーバー間のメモリ共有
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-26 21:09
こんばんは
悩んでいることがあるので質問させていただきます。 環境: Java1.5 Weblogic Oracle10g 質問 @アプリケーションサーバーが複数代あるような場合に、 各サーバーに同じJavaWebアプリがあるとします。 その場合に、サーバー間での値を共有(具体的にはJavaのstatic変数) するようなことは可能なのでしょうか? A上記が不可能であれば、サーバー間で値を共有したい場合どのような 解決方法がありますでしょうか? (DBに値を保存するような案しか思い浮かばないので、 ご意見いただければとおもいます) よろしくお願いいたします^^ |
|
投稿日時: 2006-02-27 00:02
http://www.beasys.co.jp/weblogic/docs/cluster/
自分はWeblogicは詳しくありませんが、↑このあたり参考になりませんでしょうか? |
|
投稿日時: 2006-02-27 00:57
一般にはHttpSessionのレプリケーションで十分なはずです。
Stateful Remote SessionBeanを使えば、共有ではないものの プログラマ的にはノードの違いはさほど意識しなくて済みますが。 WebLogicあたりだとEntityBeanの分散キャッシュも実装されている でしょうし、DB上のエンティティを同じような感覚で使えるでしょう。 |
|
投稿日時: 2006-02-27 17:57
単一のクライアントにひもつく情報のレプリケーション/フェールオーバを行うのであれば既に挙がっているとおり HttpSession のレプリケーションですね。
クライアントにかかわらず情報を共有するのであればEntityBeanでしょう。 ちなみに static 変数はレプリケートされません。 関連ページのリンクを貼り付けておきます。 WLSのバージョンは 9.1 であろうと妄想しておきました。 ・WebLogic Server のクラスタ化について http://edocs.beasys.co.jp/e-docs/wls/docs91/cluster/overview.html ・クラスタ : コンフィグレーション : レプリケーション http://edocs.beasys.co.jp/e-docs/wls/docs91/ConsoleHelp/pagehelp/Corecoreclusterclusterconfigreplicationtitle.html ちなみに WebLogic Server のドキュメントはこちらから検索できます。 http://tinyurl.com/ndodn |
|
投稿日時: 2006-03-02 23:52
インギさん、あしゅさん、Mogeさん
ご回答ありがとうございます&返信が遅れてしまい もうしわけございません。 知識不足のため、お3人のご回答の内容がまだまだ、 理解できていない状態です。 すこし時間をかけて、ご回答の内容及びリンク先の内容を 確認したいとおもいます。 確認後に再び質問させていただくかもしれませんが、 アドバイスよろしくお願いいたいます。 |
|
投稿日時: 2006-03-03 02:14
WebLogicのクラスタはペーぺー01さんが考えているものと違うと思いますよ。
「staticである」ということは、個々のJVMのメモリ中にのみ存在するもので、 これを共有させるためには複数ノード間でメモリを共有させる必要があります。 通常のサーバ(それなりに大型のものでも)の通信は所詮ギガビットイーサですので、 一回の通信でミリ秒単位の遅延が発生してしまうため現実的ではありません。 スパコンではノード間のメモリ共有を実現しているものもありますが、 これは非常に高価な専用ハードウェアを使うことができるから可能なのです。 そこで、J2EEコンテナではJVMレベルでのメモリ共有ではなく、HttpSessionや データベース上のエンティティ(EntityBean)等を単位に、データの整合性を 保ちつつ複製やキャッシュすることでクラスタを実現しています。 ですので、アプリケーションの設計によってはクラスタ環境でパフォーマンスが 上がらなかったり、正常に動かないなどの現象が発生してしまうわけです。 |
1