...

で実現する Data Grid スケーラブル サイト

by user

on
Category: Documents
29

views

Report

Comments

Transcript

で実現する Data Grid スケーラブル サイト
Data Gridで実現する
スケーラブルWebサイト
日本アイ・ビー・エム株式会社
Portal & e-Commerce
小林 敬明
IM dev & svc, Yamato SW Lab
山本 学
WebSphere
Extended
Deployment
V6.1
2008.09
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
アジェンダ
z お客様要件・課題
„ スケーラビリティを重視したインターネット・オークション・サイト
z ソリューション
„ 使用コンポーネント
¾ WebSphere eXtreme Scale/Virtual Enterprise V6.1
¾ Agent Framework (SW Asset)
„ 使用したXDの機能
¾ ObjectGrid
¾ アプリケーション・バージョニング(ロールアウト)
„ システム構成
z 結果・考察
2
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
お客様要件・課題
3
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
お客様要件・課題
1. スケーラビリティを重視したインターネット・オークション・サイト
性能要件
項目
数値
ピーク時の目標応答時間 1,000 ミリ秒
目標平均応答時間
500 ミリ秒
同時入札件数
100 件 / 秒
近い将来、5~10倍
の規模になる可能性
キャパシティ要件
項目
同時出展数
数値
20,000 件
加盟店数
30,000 件
2. サービス無停止でのアプリケーション更新
4
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
ソリューション
5
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
ソリューション
使用コンポーネント
z スケーラビリティを重視したインターネット・オークション・サイト
スケーラブルな分散キャッシュ
„
WebSphere eXtreme Scale (略称:WXS)
(旧製品名:WebSphere XD Data Grid)
¾
„
ObjectGrid, DataGrid Agent
Agent Framework (SW Asset)
z サービス無停止でのアプリケーション更新
ロールアウト
„
WebSphere Virtual Enterprise (略称:WVE)
(旧製品名:WebSphere XD Operations Optimization)
¾
6
アプリケーション・バージョニング(ロールアウト)
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
WXS(WebSphere eXtreme Scale)概要
z データキャッシュによる高速なデータア
クセス
z データパーティショニングによる高いス
ケーラビリティ
z 分割されたデータの位置を認識したリク
エスト・ルーティングと結果集約
z
z
z
z
サーバ側での処理実行と結果取得
データのレプリケーションによる永続化
ビルトインされたHA機構
動的クラスタによるシステム稼動時の
ノードの追加・削除
WXSクラスタ
レプリカ
リクエスト
Request
Router
処理リクエスト
を各パーティション
にルーティング
7
回復
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
Loader Loader Loader Loader
DGAgent
区分化することに
よりデータ競合を
回避
DB
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
並列分散データ処理 ~データグリッド・エージェント~
z
z
ユーザー作成のデータグリッド・エージェントを複数パーティションで並列実行
データグリッド・エージェントは、以下のどちらかのインターフェースを実装
MapGridAgent:
マップの該当エントリーを操作し、結果をMapで返す
MapAgentManager.callMapAgent()で実行
ReduceGridAgent:
ReduceGridAgentの
場合、最終集計の処理
は、クライアントで実行
される
マップのエントリーから、総合データ(平均、最大など )を生成
MapAgentManager.callReduceAgent()で実行
Partition #0
GridAgent
BackingMap
エージェント
マネージャー
callReduceAgent()
BackingMap
callMapAgent()
interface AgentManager{
Map callMapAgent(MapGridAgent agent);
Map callMapAgent(MapGridAgent agent,
Collection keys);
Object callReduceAgent(ReduceGridAgent agent,
Collection keys);
Object callReduceAgent(ReduceGridAgent agent);
}
8
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
Partition #1
GridAgent
Partition #2
GridAgent
BackingMap
・・・
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
お客様システム構成概要
Front web
SOAP/
HTTP
subscribe
Load Balancer
Active-Standby HA
DMZ
Security/
Log
WAS XD
(ODR)
WVE
SOAP/
HTTP
WAS XD
(AS)
WVE
WVE
WXS
(CS)
MQ
WAS XD
(ODR)
WVE
WAS XD
(AS)
WXS
(Client)
MQ
IHS
IHS
WXS
(Client)
WAS XD
(DM)
WVE
WXS
(CS)
IIOP
publish
WAS XD (AS)
WAS XD (AS)
Agent Framework
Agent Framework
WXS (Server)
WXS (Server)
DM: Deployment Manager
ODR: On Demand Router
WVE: WebSphere Virtual Enterprise
CS: Catalog Server
WXS: WebShere eXtreme Scale
IHS: IBM HTTP Server
XD: eXtended Deployment
AS: Application Server
・・・
BladeCenter HS21
CPU: Xeon(Dual Core) 2way
Memory: 8GB
DB
Front Web
IHS
Load Balancer
WVE
ODR
オークション
IF
WXS
DG Client
WXS
DG Agent
WebサービスIF
WAS XD
9
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
オークション
ロジック
Agent Framework
WXS Server
WXS
Cache
DB
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
冗長化を考慮したカタログ・サーバーの構成
Front web
パーティションを管理するディレクトリーサービス
IHS
IHS
z カタログ・サーバーのクラスター構成
„
„
WAS XD
(AS)
WVE
WXS
(Client)
カタログ・サーバーが停止するとシステム停止
¾
デフォルトでは、DM上で起動
常に起動している場所
WXS OG Client
AS
NA
OG
OG
WXS
(Client)
CS
AS
AS
OG
OG
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
WAS XD
(DM)
WVE
WXS
(CS)
WAS XD (AS)
WAS XD (AS)
Agent Framework
Agent Framework
WXS (Server)
WXS (Server)
DM
NA
AS
WXS OG Server
NA
WAS XD
(AS)
WVE
WXS OG Client
WXS OG Server
AS
WAS XD
(ODR)
WVE
DB
CS
AS
WXS
(CS)
MQ
publish
Client側のNode Agent上に構成
¾
10
WAS XD
(ODR)
WVE
耐障害性のために冗長化
¾
subscribe
Load Balancer
NA
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
パフォーマンスとスケーラビリティの向上
z パフォーマンス
„
„
WXS Server側でロジックの実行
オークションデータのアプリケーションサーバでのキャッシュ
オークションのロジックからローカルキャッシュへのアクセス
z スケーラビリティ
Front web
subscribe
Load Balancer
出展IDをキーとしたパーティショニング
IHS
IHS
WAS XD
(ODR)
WVE
ReduceGridAgent API
入札
WAS XD
(ODR)
WVE
WAS XD
(AS)
WVE
WXS
(Client)
WAS XD
(AS)
WVE
WXS
(CS)
WXS
(Client)
Front web
AS
NA
callAgent
CS
WXS OG Server
11
AS
OG
WAS XD (AS)
WAS XD (AS)
Agent Framework
Agent Framework
WXS (Server)
WXS (Server)
DB
出展IDをキーとした
ルーティング
WXS OG Server
NA
WAS XD
(DM)
WVE
WXS
(CS)
publish
WXS OG Client
AS
OG
MQ
AS
OG
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
AS
OG
NA
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
負荷分散を考慮したパーティション数の決定
z サーバ数の決定
„
Full GCを考慮し、1ノードに2サーバと設定
z パーティション数の決定
„
Front web
障害時に各サーバに均等に割り振られることを考慮
¾
¾
¾
DG Server : 2Node
サーバ数 : 4
パーティション数 : 12
subscribe
Load Balancer
IHS
IHS
WAS XD
(ODR)
WVE
WAS XD
(ODR)
WVE
WAS XD
(AS)
WVE
WXS
(Client)
MQ
WAS XD
(DM)
WAS XD
(AS)
WVE
WXS
(CS)
WXS
(Client)
WVE
WXS
(CS)
publish
WAS XD (AS)
WAS XD (AS)
Agent Framework
Agent Framework
WXS (Server)
WXS (Server)
DB
パーティション移動
障害発生
1
3
9
DGServer11
12
2
4
5
11
6
DGServer12
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
7
8
10
DGServer21
0
0
2
6
DGServer22
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
分散キャッシュを考慮したHA
z WXSが自動的に障害を検知し、パーティションを移動
„ プロセス障害 (即時検知)
障害発生
1
3
9
2
4
DGServer11
„
5
11
6
7
DGServer12
8
10
0
0
DGServer21
2
6
DGServer22
ノード障害(ネットワーク障害: 20秒後に障害検知)
¾
1
7
アプリケーションのリトライロジック追加
3
9
8
0
DGServer11
4
10
5
11
2
6
DGServer12
障害発生
7
8
10
DGServer21
0
2
6
DGServer22
z 障害時にサービスが継続できることの確認
„ 1秒間隔で、入札を実行し、エラーが発生することなく、入札が継続処理されることを
確認
13
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
WXSキャッシュの適用
z アプリケーション構築上の課題
„
„
キャッシュしたいデータとキャッシュしないデータの混在
ORマッピング
Agent Framework
オークションロジック
データモデル
出展 B
出展 A
入札
入札
入札
入札
入札
入札
入札
通知
入札
通知
WebSphere eXtreme Scale
入札履歴
入札履歴
14
出展
出展
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
通知
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
Agent Framework (SW Asset)
キャッシュを意識しないコーディングで,業務処理のロジックに専念
z
エージェント機能
„
z
スキーマ定義からSQLを自動生成
•メッセージ駆動型
フレキシブルデータキャッシュ制御機能
„
z
Agent
ORマッピング機能
„
z
エージェントの概念による実装を行なうためのフレームワークを提供
レコードのキャッシュ,1:Nリレーションキャッシュ,検索結果キャッシュ,
ReadOnly,キャッシュなし,を外部定義で構成
Logic
SQL外部定義機能
Data
•XMLによる定義
キャッシュ構成
スキーマ定義
その他...
<agent type="test" attribute="test">
<record type="test">
<attribute name="key" type="string"></attribute>
<attribute name="col1" type="string"></attribute>
<attribute name="col2" type="string"></attribute>
<attribute name="serial" type="int"></attribute>
<attribute name="numOfTests" type="int"></attribute>
<attribute name="numOfMessages" type="int"></attribute>
<attribute name="counter" type="int"></attribute>
<attribute name="testloop" type="int"></attribute>
<attribute name="list" type="RELATION" record="list" cache="false">
<parentkey name="key"></parentkey>
<childkey name="listkey"></childkey>
</attribute>
<key name="key"></key>
</record>
</agent>
15
エージェント
アプリケーション
エージェント
個別
情報
エージェント
フレームワーク
キャッシュ層
(WXS)
エージェント
エージェント
個別
情報
・・・・・
個別
情報
ORマッピング
P6
P3
P1
P2
データベース層
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
P4
P5
RDB
個別
情報
エージェント
スケジューラー
キャッシュコントローラ
P0
エージェント
P9
P7
P8
P10
P11
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
Agent FrameworkのAPIの例
•キャッシュに依存したコードがない
•SQLがロジック内にない
RecordSet cart = get (“cart”);
<record type=“cart” persistent=“persistent”>
<attribute name=“customerid”
•キャッシュする
type=“string”/>
<attribute name=“cartid” type=“string”/>
…
<key name=“customerid”/>
<key name=“cartid”/>
</record>
•キャッシュしない
Query recommend=
Place().getQuery(“GetRecommend”, tran);
recommend.addArg(id);
RecordSet result = recommend.execute();
Iterator<Record> it = result.get();
<record type=“productinfo”
persistent=“in_transaction”>
<attribute name=“productid” type=“string”/>
<attribute name=“categoryid” type=“string”/>
…
<key name=“productid”/>
</record>
<query name=“GetRecommend”>
<record type=“productinfo”/> •検索SQL定義
<sql>
<select statement=“select … where
subcategory=?/>
</sql>
</query>
Iterator<Record> cartit = cart.iterator();
while(cartit.hasNext()) {
Record cartitem = cartit.next();
String productid=
cartitem.getString(“productid”);
}
int count = 0;
while(rit.hasNext() && count < 10) {
Record r = it.next();
result.add(r.copy());
count++;
}
16
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
Agent Frameworkの適用
z 出展を単位にAgentを作成
z アプリケーションは、DBやキャッシュを意識せず、出展のキーに
紐付くデータがAgentにロードされる
Agent Framework
出展BB
出展
出展
B
CAgent
Agent
出展 B Agent •出展 Agent
Agent
ロジック
出展 A Agent
ロジック
ロジック
出展 B
出展 A
入札
入札
入札
入札
入札
入札
入札
通知
入札
通知
WebSphere eXtreme Scale
入札履歴
入札履歴
17
出展
出展
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
通知
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
結果・考察
18
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
06. Data Gridで実現するスケーラブル
Webサイト
サイト
Gridで実現するスケーラブルWeb
結果
z 270入札/秒を達成。キャッシュOFF時に比べて4倍以上の性能。
性能要件
項目
ピーク時の目標応答時間
数値
1,000 ミリ秒
目標平均応答時間
500 ミリ秒
同時入札件数
100 件 / 秒
結果
項目
ピーク時の応答時間実測値
数値
180 ミリ秒
平均応答時間実測値
20 ミリ秒
キャッシュOFFの場合
同時入札件数
270 件 / 秒
61 件 / 秒
z ロールアウト機能により、サービスが止まることなくアプリケーショ
ンの更新ができることを確認
19
事例から学ぶWebSphere
XD活用セミナー
事例から学ぶ
XD活用セミナー
IBM Internal Use Only
Fly UP