GlassFish v2のインメモリセッションリプリケーションの概要

2007年5月30日 at 8:36 PM



JavaOneの初日以降アップデートができなくて申し訳ありませんでした。

期間中、急遽仕事が舞い込んできたため、アップデートができませんでした。

JavaOneについての報告は、他のエンジニアの方達が既にたくさん報告してくださって

いるので、改めてという事も少ないのですが。JavaOneのセッションにおいて、

GlassFish v2についてのセッションに出てきたので技術的な概要の紹介を少しします。



GlassFish v2よりインメモリセッションリプリケーション機能が追加されました。

この機能はショッピングサイトにおけるショッピングカートの実装を

思い浮かべてもらえば分かりやすいのですが、ユーザが買い物かごに入れた

商品のデータは通常HTTPセッションのようなメモリ上に格納されます。

このため障害が発生するとメモリ上のデータであるカートの情報は失われてしまいます。

セッションリプリケーションでは、システムに障害が発生した場合に、

このカートの情報が失われないよう他のマシンにも常にセッション情報を

コピーし保持しておく仕組みです。



GlassFish v2ではセッションリプリケーションを行うため2通りの方法を提供しています。



●HADB (High Availability Database)の使用

●オンメモリセッションリプリケーションの使用(New)



1つはSun Java System Application Server Enterprise Edition 7以降で

利用されているHADBを利用する構成です。



そしてもう一つは、今回新たに導入されたインメモリセッションリプリケーションです。



GlassFish v2より新しく追加されたインメモリセッションリプリケーションの

動作を下記に説明します。

インメモリ内に保持するセッション情報は下記の通りです。



●Http session state

●Stateful (EJB technology) Session bean state



クラスタ構成された各インスタンスはそれぞれ、自動的に決定されたペアが存在し、

それぞれのインスタンスとペア間でHTTPセッション等のデータをコピーし

単一システムの障害に備えています。



例えば、Instance 1とInstance 2がペアである場合、ロードバランサ経由で

Instance 1に最初のリクエストが要求されると、Instance 1でセッションが

作成された後、セッション情報はInstance 2にコピーされます。







この状況でマシンに何らかの障害が発生し停止した際、クライアントである

Web ブラウザからの要求に対して、下記のいずれかのマシンから応答が返されます。

これはロードバランサがマシンの障害を検出すると、別の送信先を任意に決定するためです。



1.ペアになっていたインスタンス(例:Instance 2)に要求された場合

2.ペアではないインスタンス(例:Instance 3 もしくはInstance4)に要求された場合



まずロードバランサ経由で、ペアになっていたインスタンス(Instance 2)に

要求された場合、ペアであったインスタンス(Instance 2)から直接応答を返します。







次に、ペアではなかったインスタンス(例:Intance 3、Instance 4)に要求された場合、

返信用封筒付[Self-Addressed-Stamped-Envelope (SASE)]のリクエストを、クラスタ内に

所属する全インスタンスにブロードキャストし、返信に応じたインスタンス

(例:Instance 2)よりセッション情報を受け取りWebブラウザに対して応答を返します。





また、クラスタ内では障害発生システムを自動的に検知しクラスタのメンバーから

はずす処理なども行われています。

このセッション情報の共有、クラスタメンバの動的再構成にはJXTAの技術が

用いられています。



最後に、

Sun Java System Application Server 8.xまでは高可用性を実現するためには、

HADB以外に選択肢がありませんでした。しかしGlassFish v2以降では、HADBに加え

インメモリセッションリプリケーションも選択できるようになります。

インメモリセッションリプリケーションは、HADBに比べスループットが向上します。

一方、HADBは99.999%の高可用性を実現する事ができます。



今後、御客様のニーズに応じ最適な構成を選択してください。


広告

Entry filed under: Application Server/GlassFish.

JavaOne初日の報告 ホットトピックセミナーの開催


Java Champion & Evangelist

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2007年5月
« 4月   6月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

カテゴリー

Twitter

  • ありがとうございます😊 twitter.com/chomado/status… 1 hour ago
  • @kotomacontact そうですね、ここに限らずたまに、似た話を聞きますので、つい書いてしまいました。 ありがとうございます。私自身も勘違いがおきないような資料作りを今後も、心がけていきたいと思います。 3 hours ago
  • @kotomacontact と思ってます。 3 hours ago
  • @kotomacontact 人は間違いがありますし(私も含め)個人攻撃をしたいわけではないです。ただDBサービスという区切り方はないです。だってDBが落ちてしまうとそこに接続している全サービスは落ちますしサービス毎のスケールもできない。単にAPI化すれば良いというわけでもない 3 hours ago
  • RT @DaschnerS: IntelliJ 2017.3 EAP improves its #JavaEE8 support! twitter.com/intellijidea/s… 5 hours ago

clustermap

ブログ統計情報

  • 1,004,766 hits

Feeds


%d人のブロガーが「いいね」をつけました。