- PR -

アプリケーションサーバー間のメモリ共有

1
投稿者投稿内容
ペーぺー01
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 2006-02-26 21:09
こんばんは
悩んでいることがあるので質問させていただきます。

環境:
Java1.5
Weblogic
Oracle10g

質問
@アプリケーションサーバーが複数代あるような場合に、
各サーバーに同じJavaWebアプリがあるとします。
その場合に、サーバー間での値を共有(具体的にはJavaのstatic変数)
するようなことは可能なのでしょうか?

A上記が不可能であれば、サーバー間で値を共有したい場合どのような
 解決方法がありますでしょうか?
 (DBに値を保存するような案しか思い浮かばないので、
  ご意見いただければとおもいます)

よろしくお願いいたします^^

K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2006-02-27 00:02
http://www.beasys.co.jp/weblogic/docs/cluster/
自分はWeblogicは詳しくありませんが、↑このあたり参考になりませんでしょうか?
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-02-27 00:57
一般にはHttpSessionのレプリケーションで十分なはずです。

Stateful Remote SessionBeanを使えば、共有ではないものの
プログラマ的にはノードの違いはさほど意識しなくて済みますが。
WebLogicあたりだとEntityBeanの分散キャッシュも実装されている
でしょうし、DB上のエンティティを同じような感覚で使えるでしょう。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 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
ペーぺー01
常連さん
会議室デビュー日: 2005/05/29
投稿数: 45
投稿日時: 2006-03-02 23:52
インギさん、あしゅさん、Mogeさん
ご回答ありがとうございます&返信が遅れてしまい
もうしわけございません。

知識不足のため、お3人のご回答の内容がまだまだ、
理解できていない状態です。
すこし時間をかけて、ご回答の内容及びリンク先の内容を
確認したいとおもいます。

確認後に再び質問させていただくかもしれませんが、
アドバイスよろしくお願いいたいます。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-03-03 02:14
WebLogicのクラスタはペーぺー01さんが考えているものと違うと思いますよ。

「staticである」ということは、個々のJVMのメモリ中にのみ存在するもので、
これを共有させるためには複数ノード間でメモリを共有させる必要があります。
通常のサーバ(それなりに大型のものでも)の通信は所詮ギガビットイーサですので、
一回の通信でミリ秒単位の遅延が発生してしまうため現実的ではありません。

スパコンではノード間のメモリ共有を実現しているものもありますが、
これは非常に高価な専用ハードウェアを使うことができるから可能なのです。

そこで、J2EEコンテナではJVMレベルでのメモリ共有ではなく、HttpSessionや
データベース上のエンティティ(EntityBean)等を単位に、データの整合性を
保ちつつ複製やキャッシュすることでクラスタを実現しています。

ですので、アプリケーションの設計によってはクラスタ環境でパフォーマンスが
上がらなかったり、正常に動かないなどの現象が発生してしまうわけです。
1

スキルアップ/キャリアアップ(JOB@IT)