TOP比較データ> レプリケーションの同期/非同期
OSS評価手法
オープンソースソフトウェアの性能・信頼性評価手法

第3回:JBossと商用APサーバの比較

著者:NTTデータ  西沢 里恵   2005/5/30
前のページ  1  2   3  4  次のページ
レプリケーションの同期/非同期

   レプリケーションが完了してから応答を返す「同期」か、レプリケーションが完了するのを待たずに応答を返す「非同期」かの2つの方式がある。
同期
レプリケーション処理にかかる時間だけ応答が遅延する。レプリケーションが完了してから応答を返すので、レプリケーション失敗時のエラーがクライアント側に返る
非同期
レプリケーション処理に伴う応答の遅延がない。応答を返してからレプリケートを完了する前にAPサーバがダウンすると、クライアントからは正常に見えるにも関わらずHttpSessionの内容に不整合が生じる恐れがある


レプリケーションの粒度

   レプリケーションの粒度とは、レプリケーション実行時にHttpSessionの何を単位としてレプリケートするかを決めるものである。常にHttpSession全体をレプリケートする「セッション単位」と、変更された属性のみをレプリケートする「属性単位」がある。

セッション単位
HttpSession全体をレプリケートするので、無駄な処理やトラフィックが発生する
属性単位
変更された属性のみをレプリケートするので、無駄な処理やトラフィックが発生しない

   図3にレプリケーションの粒度の違いによる、処理の違いを示す。

レプリケーションの粒度
図3:レプリケーションの粒度

   図3のように商品Aの個数が2個から3個に変化した場合、HttpSessionレプリケーションの粒度がセッション単位の場合では、変更されていない商品Bやその他の内容までレプリケートすることになる。粒度が属性単位の場合では、変更があった商品Aの内容だけレプリケートする。

   このように、ひとつの属性が変更されただけで全体をレプリケートするセッション単位に比べると、属性単位では変更部分のみをレプリケートするため無駄な処理やトラフィックが発生しない。


レプリケーションのトリガー

   レプリケーションのトリガーとはレプリケーションが必要と判断される動作のことである。トリガーには以下の4通りがある。

HttpSessionの変更
セッションの新規作成、setAttribute()、removeAttribute()による属性変更、タイムアウトやinvalidate()によるセッション無効化がレプリケーションのトリガーになる
プリミティブ型でない属性の参照
プリミティブ型でない属性をgetAttribute()した場合にレプリケートされる
getAttribute()による属性参照
getAttribute()による属性参照をした場合にレプリケートされる
HttpSessionへのアクセス
HttpSessionにアクセスがあればレプリケーションを行う。Webコンテナのタイムスタンプ更新処理のため、HTTPリクエスト毎にHttpSessionのアクセスが行われ、レプリケーションが行われることになる

※補足: プリミティブ型とは、String、Boolean、Byte、Character、Short、Integer、Long、Float、Doubleのこと

   通常、「HttpSessionの変更」は常にHttpSessionレプリケーションのトリガーとなる。それ以外の3つをトリガーとして扱うかどうかはAPサーバによって異なる。

前のページ  1  2   3  4  次のページ


株式会社NTTデータ 西沢 里恵
著者プロフィール
株式会社NTTデータ  西沢 里恵
オープンソース開発センタ 技術開発担当
2004年に(株)NTTデータに入社、今年2年目になったばかり。新人研修終了後、11月から今回の記事で紹介しているOSS推進フォーラムの業務につくことに。技術力が高く、個性的なメンバーに囲まれ、日々刺激を受ける毎日である。


INDEX
第3回:JBossと商用APサーバの比較
  はじめに
レプリケーションの同期/非同期
  今回のHttpSessionレプリケーションの設定
  JBossクラスタのボトルネックについての考察