 |

|
オープンソースソフトウェアの性能・信頼性評価手法
|
第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データ 西沢 里恵
オープンソース開発センタ 技術開発担当
2004年に(株)NTTデータに入社、今年2年目になったばかり。新人研修終了後、11月から今回の記事で紹介しているOSS推進フォーラムの業務につくことに。技術力が高く、個性的なメンバーに囲まれ、日々刺激を受ける毎日である。
|
|
|
|