...

クラウド時代の ハイパフォーマンス&スケーラブル データストアを考える

by user

on
Category: Documents
18

views

Report

Comments

Transcript

クラウド時代の ハイパフォーマンス&スケーラブル データストアを考える
クラウド時代の
ハイパフォーマンス&スケーラブル
データストアを考える
日本アイ・ビー・エム株式会社
ソフトウェア事業
© 2009 IBM Corporation
目次
ƒ クラウド・コンピューティング概要
ƒ "クラウド的"データストア: WebSphere eXtreme Scale
ƒ WXSのMap/Reduce機能
ƒ WXS応用例: solidDB Cluster
2
© 2009 IBM Corporation
クラウド・コンピューティング概要
3
© 2009 IBM Corporation
クラウド・コンピューティング – 新たな潮流
“クラウドはIT業界を変革するだろう…
企業運営や個人のワーク・スタイルが劇的に変わるかもしれない”
• ITサービス提供・利用形態の新たな潮流
2009
• サービス利用者にとって:柔軟性、使いやすさ、経済活動の新たな機会
• サービス提供者にとって:セルフ・サービス、規模の経済、提供方法の多様化Cloud Computing
• ダイナミック・インフラストラクチャが次世代データ・センター構築の成否
Software as a Service
1990
Utility Computing
Grid Computing
© 2009 IBM Corporation
Cloud OS
Map Reduce
スケール・アウト
分散キャッシュ
インメモリDB
仮想化技術
プロビジョニング
データ・グリッド
スケーラビリティー
アベイラビリティー
コンシステンシー
SaaS
Software-as-a-Service
PaaS
Platform-as-a-Service
IaaS
Infrastructure-as-a-Service
プライベート・クラウド
5
パブリック・クラウド
© 2009 IBM Corporation
2つの観点
ƒ 使う側
–すぐに使える
–コストが安い
–便利
– ・・・
ƒ 提供する側
–スケールしたい
–コストを安くしたい
– ・・・
6
© 2009 IBM Corporation
相反する2つの方向性
ƒ集中化
ƒ分散化
7
© 2009 IBM Corporation
相反する2つの方向性:集中化
ƒ 背景
– 規模の経済 (Economies of Scale)
ƒ 事象
– データ・センターの大規模化
– コンピューティング・リソースの最適化
• プール化 ( 集中化と仮想化 )
• プロビジョニング
– XaaS
• IaaS / PaaS / SaaS
8
© 2009 IBM Corporation
CIOの第一のIT課題は運用・管理コストの削減
新規サーバーに対する支出額はほぼ横ばいなのに対し、
設置台数とその管理・運用コストは増加の一途
$300
IT予算
(US$B)
電源・空調関係にサー
バー購入費用の約半
分相当が消費され、上
昇傾向にある
電源および空調関連費用
サーバー運用管理費用
$250
40
新規サーバー購入
35
トランザクションの増加に
よってサーバー台数が急増
$200
30
$150
25
サーバー台数急増によ
り、ワークロード増加と
運用効率の低下が懸
念される
20
$100
15
新規購入費用は横ばい
10
$50
5
$0
9
Source: IDC, Virtualization 2.0: The Next Phase in Customer Adoption, Doc #204904, December 2006
10
導入台数
(百万台)
20
09
20
08
20
07
20
06
20
05
20
04
20
03
20
02
20
01
20
00
20
99
19
98
19
97
19
19
96
0
© 2009 IBM Corporation
大規模化・集中化
10
© 2009 IBM Corporation
XaaS
ƒ SaaS - Software as a Service
–ソフトウェアを提供
ƒ PaaS - Platform as a Service
–ソフトウェア開発
・稼働プラットフォームを提供
ƒ IaaS - Infrastructure as a Service
–コンピュータ・システム基盤を提供
11
© 2009 IBM Corporation
相反する2つの方向性 :分散化
ƒ 背景
– プロセッサ/ハード・ディスク技術革新速度の鈍化
– 膨大なトランザクション量
ƒ 事象
– スケール・アップからスケール・アウトへ
– 分散並列処理
12
© 2009 IBM Corporation
スケール・アップからスケール・アウトへ
ƒ スケール・アップ
– 単一のコンピュータ・ノードを増強し、高速化、高機能化を実現
(垂直スケーラビリティ)
ƒ スケール・アウト
– 複数のコンピュータ・ノードでクラスタを組み、高速化を実現
(水平スケーラビリティ)
コスト
パフォーマンス
13
© 2009 IBM Corporation
n層システムにおけるWebアプリケーションのスケール・アウト
アプリケーションサーバー層
データ層
データ・アクセスがボトルネックとなる
BL
Clients
BL
IP Sprayer
BL
永続データストア
BL
14
© 2009 IBM Corporation
データ層のスケール・アウト戦略
分割単位 スケーラビリティ
表
列
行
15
○?
○?
○?
パフォーマンス
△
アクセス頻度
の平準化が
課題
△
アクセス頻度
の平準化が
課題
○
コンシステンシ
実装例
ACID
トランザクション
分散RDB
で担保
ACID
トランザクション
で担保
別途考慮が
必要
正規化済の
RDBの表
キー:バリュー
形式分散
キャッシュ
© 2009 IBM Corporation
n層システムへの分散インメモリ・キャッシュの適用
アプリケーションサーバー層
データ層
データ層のスケール・アウト化
BL
Cache
Clients
BL
Cache
IP Sprayer
BL
BL
16
Cache
永続データストア
Cache
© 2009 IBM Corporation
データ層スケール・アウトの課題
ƒ コンシステンシー
–データの一貫性を保つこと
ƒ アベイラビリティ
–可用性を保つこと
ƒ スケーラビリティー
–処理量増大に応える拡張性を備えること
17
© 2009 IBM Corporation
CAP定理
Consistency Availability
Tolerance to network
Partition
http://www.ccs.neu.edu/groups/IEEE/ind-acad/brewer/
http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf
18
© 2009 IBM Corporation
ACID特性
ƒトランザクション処理を構成する属性
–Atomicity 原子性
–Consistency 整合性
–Isolation 分離性
–Durability 永続性
19
© 2009 IBM Corporation
BASE
ƒ ACID特性に代わって注目されている特性
–Basically Available
•可用性
–Soft-state
•緩い状態管理
–Eventual-consistency
•最終的には担保される、整合性
20
© 2009 IBM Corporation
データ・センターの技術革新 と WebSphere Software
WebSphere
ƒプロビジョニング
ƒ仮想化
CloudBurst Appliance
WebSphere Application Server
HyperVisor Edition (WAS HV)
ƒアプリケーション・サーバー層の
スケール・アウト
WebSphere Virtual Enterprise
ƒデータ層のスケール・アウト
21
(WVE)
WebSphere
– 分散インメモリー・キャッシュの活用
eXtreme Scale
– 分散並列処理
(WXS)
© 2009 IBM Corporation
WebSphere CloudBurst & WAS HV
1. WebSphereが提供するアプライアンス
2.クラウド
- ハードウェア・アプライアンス(CloudBurst)
お客様企業のオン・プレミスのエンタープライズ・クラウド
- CloudBurstの管理機能
- hypervisor (VMware, XEN, System p, z/VM) *
- WebSphere Application Server イメージ
- ストレージ
- WebSphere Application Server パターン
- ネットワーク
- ソフトウェア・アプライアンス(WebSphere HV)
Web 2.0 UI & CLI
* 2009年6月現在VMWareのみサポート
REST
APIs
OVF
イメージ
パターン
アプリケーション
3. WebSphere 仮想環境
-要件に合わせてWASイメージやパターンを
カストマイズ
- 仮想環境をクラウドに配布(ディスペンス)し、開始
- ライフ・サイクルの管理と最適化
© 2009 IBM Corporation
22
WebSphere Virtual Enterprise
¾ Webアプリケーション環境を最適化
¾ サービスレベルを確保しながら資源を有効利用し保守・管理を効率化
¾ 異種環境においてもアプリケーションの改変なしでXDの機能を利用可能
一体化・自動
化された環境
WebSphere XDによる稼働環境
サーバー負荷に
お得意様
CPU
応じた処理の分散
アプリA
100%
高
自動化・容易化された
保守・管理機能
0%
XD
CPU
アプリA
100%
バッチ
優先度
0%
XD
CPU
XD
100%
バッチ
バッチ
他ベンダー
AppServer
低
23
ゲストユーザー
ユーザー層別・業務等による
優先度付けに対応したリクエス
トの流量制御
負荷状況に応じた
バッチのスケジュール管理
サーバーの動的配置
アプリB
他ベンダー
AppServer
サーバーの停止・
保守時にもサービ
スは継続稼動
CPU
100%
CPU
アプリB
0%
サービスを止めずにアプ
リケーション更新、複数
バージョンを同時稼働
100%
XD
0%
登録ユーザー
0%
アプリB
Tomcat
© 2009 IBM Corporation
クラウド・コンピューティング・アーキテクチャ・モデル
サービス要求
および運用
ユーザー,
運用担当者
サービス・プロバイダー
クラウド・サービス層
サービス生成
および導入
Service
Planning
アプリケーション,プロセス,情報サービス
(Application, Process and Information Services)
サービスの定義
Standards Based Interfaces
ソフトウェア・プラットフォーム・サービス
(Software Platform Services)
Standards Based Interfaces
ロール・ベース
のアクセス
基盤サービス
サービスの
開発と
パブリッシング
(Infrastructure Services)
クラウド管理プラットフォーム層
サービスの実行
と構成管理
サービス・
カタログ
ビジネス・サポート・サービス
(BSS)
Standards Based Interfaces
運用
コンソール
運用サポート・サービス
(OSS)
サービスの
報告と分析
© 2009 IBM Corporation
クラウド・コンピューティング・アーキテクチャ・モデル
サービス要求
および運用
ユーザー,
運用担当者
サービス・プロバイダー
クラウド・サービス層
サービス生成
および導入
Service
Planning
アプリケーション,プロセス,情報サービス
(Application, Process and Information Services)
サービスの定義
Standards Based Interfaces
WebSphere
WebSphere
WebSphere
ソフトウェア・プラットフォーム・サービス
(Software eXtreme
PlatformScale
Services)
Virtual Enterprise
CloudBurst
Standards Based Interfaces
ロール・ベース
のアクセス
基盤サービス
サービスの
開発と
パブリッシング
(Infrastructure Services)
クラウド管理プラットフォーム層
サービスの実行
と構成管理
サービス・
カタログ
ビジネス・サポート・サービス
(BSS)
Standards Based Interfaces
運用
コンソール
運用サポート・サービス
(OSS)
サービスの
報告と分析
© 2009 IBM Corporation
"クラウド的"データストア:
WebSphere eXtreme Scale
26
© 2009 IBM Corporation
WebSphere eXtreme Scale(WXS) オーバービュー
ƒ データキャッシュによる高速なデータアクセス ƒ サーバ側での処理実行と結果取得
ƒ データパーティショニングによる高いスケーラ ƒ データのレプリケーションによる永続化
ビリティ
ƒ ビルトインされたHA機構
ƒ 分割されたデータの位置を認識したリクエス ƒ 動的クラスタによるシステム稼動時の
ト・ルーティングと結果集約
ノードの追加・削除
WXSクラスタ
レプリカ
リクエスト
Request
Router
処理リクエスト
を各パーティション
にルーティング
27
回復
Loader Loader Loader Loader
DGAgent
DB
区分化することに
よりデータ競合を
回避
© 2009 IBM Corporation
ObjectGrid
ƒ
データをJavaのプロセス上に分散して配置
– メモリー上のデータに高速アクセス (<3ms @100ktps)
– データのレプリケーションとパーティションニング
ƒ
オンデマンドなスケーラビリティ
・・・
・・・
– プロセスを追加することでデータを動的に再配置
• 負荷が集中しないので、リニアにスケールする
• 数千プロセス・レベルまでスケール
IP Sprayer
Web Container
28
数ミリ秒
© 2009 IBM Corporation
自律的な回復
– 可用性確保のため、データのレプリカを同期/非同期で保持
• データを保持する区画(シャード)には、プライマリとレプリカがある
• レプリカの数や同期方法は構成ファイルで設定
– 障害発生時には、ポリシーが満たされるよう自動的に対応
• レプリカがプライマリへと昇格
• 必要数のレプリカがない場合は自動的に作成される
r3
障害
発生
p1
r3
p1
r1
・・・
r1
p2
r4
・・・
r2
p3
p4
・・・
※各MAPのデプロイメント・ポリシーを(非)同期レプリカ=1とした場合
29
© 2009 IBM Corporation
WXSの基本トポロジー
ƒ
ローカル構成
– ASプロセス内にObjectGridインスタンスを作成
•
プロセス内で完結した構成
//OGManagerの取得
ObjectGridManager ogMgr =
ObjectGridManagerFactory.getObjectGridManager();
WAS
WAS
WAS
OG
OG
OG
//OGインスタンスの作成
ObjectGrid og = ogMgr.createObjectGrid(“myGrid");
ƒ
クライアント・サーバー構成
– データを保持するObjectGrid(サーバー)に、クライアントが接続
•
Catalog Server経由で接続
//OGManagerの取得
ObjectGridManager ogMgr =
ObjectGridManagerFactory.getObjectGridManager();
//カタログ・サービスへの接続
String corbaloc =
“catalogServer1:2809:catalogServer2:2809”
ClientClusterContext ccc =
ogMgr.connect(corbaloc, null, null);
//OGインスタンスの取得
ObjectGrid og = ogMgr.getObjectGrid(ccc, “myGrid");
どこ?
Catalog
Server
Catalog
Server
OG
OG
OG1
OG
OG
Client
Client
OG
30
WAS または
Standalone Java
OG
OG
OG
直接アクセス© 2009 IBM Corporation
システム構成例:ローカル構成
AppServer JVM
App
WXS
API
Partition
Grid
Containe
r
Loader
(JDBC/JPA)
AppServer JVM
App
31
WXS
API
Grid
Containe
r
© 2009 IBM Corporation
システム構成例:クライアントサーバー構成
AppServer JVM
App
WXS
API
Near
Cache
Grid
Client
AppServer JVM
App
32
WXS
API
Grid JVM
Partition
Grid
Containe
r
Loader
(JDBC/JPA)
Grid JVM
Grid
Client
Grid
Containe
r
© 2009 IBM Corporation
システム構成例:2nd Level Cache
AppServer JVM
App
JPA
API
Near
Cache
JPA
(EJB3)
JPA
Cache
Plug-in
AppServer JVM
App
Hibernate
API
Hibernat
e
Cache
Plug-in
Hibernate
33
Grid
Client
Near
Cache
Grid
Client
Grid JVM
Partition
Grid
Containe
r
Grid JVM
Grid
Containe
r
© 2009 IBM Corporation
レプリケーション(複製)
ƒ データ複製により可用性を確保
– プライマリ区画:全ての更新処理を行う
– レプリカ区画:データの変更(更新/挿入/削除)時にデータの更新を受け取る
•
•
•
Session
Primar
y
同期
Replica
同期レプリカと非同期レプリカがある
レプリカからプライマリのデータを読みに行くことはない
replicaReadEnabled=trueを設定することで、参照処理はレプリカにルーティング可能
非同期
– デプロイメント・ポリシー構成ファイル内で複製方針を指定
Replica
Replica
• 同期モード:トランザクション内でデータを複製
– レプリカ数により、パフォーマンスに影響を与える
•
•
最大レプリカ :確保すべきレプリカの最大数を指定
最小レプリカ :データの可用性の観点から、処理に必要な最小のレプリカ数
9
9
起動時、最小レプリカが満たされるまでは、区画(シャード)はActiveとならない
通常時、障害により最小レプリカが満たされない間は、区画(シャード)はデータ更新処理を受け付けない(ドミノ・モード)。※参照処理は処理
される
• 非同期モード:トランザクション終了後、データを複製
•
最大レプリカ :確保すべきレプリカの最大数を指定
□デプロイメント・ポリシー構成ファイル
34
<deploymentPolicy... >
<objectgridDeployment objectgridName=“myGrid01”>
<mapSet name=“mapSet1” numberOfPartitions=“0“ minSyncReplicas=”1” maxSyncReplicas=“1” maxAsyncReplicas=“2”>
<map ref=“myMap01” />
</mapSet>
</objectgridDeployment>
</deploymentPolicy>
© 2009 IBM Corporation
可用性(コア・グループ/ゾーニング)
ƒ コア・グループ
– WebSphere AppServerの高可用機能(HAManager)と同様の仕組み
• デフォルト20サーバー毎のコア・グループに自動的に分割される
• 各コア・グループでリーダーが選出される
–
–
リーダーに選出されたサーバーでは、Peer Managerが稼動
リーダーが代表して、グループ内メンバーに関するヘルス状態とイベントに関して、カタログ・サーバーとやりとりを行う
ƒ ゾーニング
– 自然災害や電源障害に備え、遠隔地データ・センター間でのレプリケーションをサポート
OG
OG
coregroup1
OG
coregroup2
OG
OG
OG
OG
OG
coregroup3
35
OG
・・・
・・・
OG
OG
・・・
・・・
OG
Zone01
Zone02
<東京>
<大阪>
OG
Catalog
Master
Server
Catalog
Server
OG
・・・
・・・
OG
OG
OG
OG
OG
OG
Catalog
Server
OG
OG
OG
Catalog
Server
OG
OG
OG
OG
・・・
OG
OG
OG
・・・OG
・・・
・・・
・・・OG
OG
coregroup4
・・・OG
OG
coregroup5
OG
coregroup6
© 2009 IBM Corporation
セキュリティ
ƒ 認証機能
– クライアント・サーバー間、およびサーバー同士での認証
– ID/Password、証明書、Kerberos token
ƒ 認可機能
– JAASベースの認可機構を提供(拡張可能)
– Map/ObjectGrid/Agentなど、きめ細かい認可をサポート
ƒ 暗号化
– クライアント・サーバー間でのTLS/SSL接続をサポート
36
© 2009 IBM Corporation
WXSの基本概念
ƒ 各コンポーネントの機能概要
ObjectGrid
ObjectGrid
ObjectGridフレームワークの核となるコンポーネント
SessionとBackingMapの連携処理を担い、Session内で共有するオ
ブジェクト(Transaction IDやConnectionオブジェクト)などを保持する
SLOT機能も提供
¾ セキュリティ機能などのプラグインも提供
¾
ObjectGridフレームワーク
のコア・コンポーネント
Session
トランザクション処理を可能にする
※ObjectGridのオブジェクトにアクセスするため
には、必ずSessionを取得する必要がある
※複数のスレッドからSessionを共有することはで
きない
ObjectMap
ObjectMap
ObjectMap
BackingMapへの
インターフェース
名前による紐付け
BackingMap
BackingMap
BackingMap
コミットされたデータを
保持
37
¾
Session
¾
¾
エントリーのトランザクショナルな処理を可能にする
複数エントリー操作の一括コミット、一括ロールバック
ObjectMap
アプリケーションからBackingMapへアクセスする際のインター
フェースとなる(MAPの名前によるBackingMapとの紐付け)
¾ Mapの拡張として、getForUpdate / getAll / putAll などのメソッドも
提供
¾ java.util.Mapインターフェースの拡張であるJavaMapも提供
¾ 製品提供のEvictor機能の提供
¾
BackingMap
¾
¾
¾
コミットされたデータ(Object)を保持
Loaderプラグインを介し、データベース等との連携処理を行う
その他、多様なプラグインを提供
© 2009 IBM Corporation
Loader plug-inによるデータロードと永続化
設定可能なデータロードのタイミング
(1)プリロード
Grid Container 起動時に指定されたデー
タをあらかじめロード
Application JVM
App
WXS
API
Near
Cache
Grid
Client
Grid JVM
Partition
(2)オンデマンド
クライアントからのリクエスト発生時にロー
ドし、キャッシュ
Grid
Containe
r
Loader
(JDBC/JPA)
Application JVM
App
WXS
API
Grid JVM
Grid
Client
Grid
Containe
r
データ永続化のポリシー
(1)Write Thru
Grid Container上でのデータ更新を即座
にDBへ書き戻す
(2)Write Behind
データ更新を一定期間バッファリングし、
まとめてDBへ書き戻す
38
© 2009 IBM Corporation
DB側での更新を考慮したキャッシュの処理
Ext.
App
(2)
Application JVM
App
WXS
API
Grid JVM
Near
Cache
Application JVM
App
WXS
API
Partition
Grid
Containe
r
Grid
Client
Grid
Client
(1)
Grid JVM
Grid
Containe
r
Grid
Client
Trigger
(3)
Grid
Client
(1) 一定時間毎にポーリング
timestamp / 更新IDを利用
(2) DB更新PGによる通知
JMS
Queue
39
(4)
(3) DBトリガーによる通知
(4) JMSによる通知
Grid ContainerからClientへ通知
© 2009 IBM Corporation
アプリケーション・プログラミング概要
ƒ ObjectMap API
– java.util.Mapライクなインターフェースを通じて、KeyとValue(データ)のペアとして操作
– LowレベルAPIで、処理は高速
ƒ EntityManager API
– JPAライクなインターフェースで、オブジェクト間の関連を格納可能
– Tupleオブジェクト形式に収納してBackingMapに格納
– ObjectGrid QueryによるSQLライクな照会機能
ƒ 並列分散データ処理
– データグリッド・エージェントAPI
• 各区画データに対する処理を、並列して実行
ƒ FIFOアクセス
– ObjectMap APIのgetNextKey()によるFIFO実現手法
– データグリッドを「キュー」として利用
40
© 2009 IBM Corporation
データの格納・取得・更新・削除 ~SessionとObjectMap~
データのへのアクセス方法
Session session = objectGrid.getSession();
ObjectMap map = session.getMap("MyDataMap");
Integer key = new Integer(999);
session.begin();
map.insert(key, new MyData("Hello world!"));
session.commit();
1. Sessionオブジェクトの取得
2. ObjectMapの取得
3. セッションの開始
4. データの操作(ObjectMap)
•
格納: insert
•
取得: get/getAll/getForUpdate/getAllForUpdate
•
更新: update
•
削除: remove
•
その他: put (更新 or 格納)、touch(アクセス履歴の更新)
①
②
③
④
⑤
5. セッションのコミット
アプリケーション
41
insert(key, value)
get(key)
ObjectGrid
Session
ObjectMap
key
value
BackingMap
Loader
update(key, value)
remove(key)
© 2009 IBM Corporation
オブジェクトの取得・更新・削除 ~クライアント・サンプルコード~
// ****初期化 ~ サーバー接続 *****
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
String corbaloc = “catalogServer1:2809:catalogServer2:2809”
ClientClusterContext clientClusterContext = objectGridManager.connect(corbaloc, null, null);
ObjectGrid objectGrid = objectGridManager.getObjectGrid(clientClusterContext, "MyObjectGrid");
// **** session&ObjectMap取得 ****
Session session = objectGrid.getSession();
ObjectMap map = session.getMap("MyDataMap");
// **** sessionを開始し、エントリーを操作 ****
try{
Integer key = new Integer(999);
/* Insert */
session.begin();
map.insert(key, new MyData("Hello world!"));
session.commit();
/* Get&Update */
session.begin();
MyData target = (MyData)map.get(key);
target.message="Hello New world!!";
map.update(key, target);
session.commit();
/* Remove */
session.begin();
map.remove(key);
session.commit();
}
catch(Exception ex){
session.rollback();
}
// ***サーバー接続クローズ ****
objectGridManager.disconnect(clientClusterContext);
42
© 2009 IBM Corporation
オブジェクトの格納・取得・更新・削除 ~ロック・ストラテジー~
ƒ 次の3つのロック・ストラテジーが、各BackingMapに関して選択可能
ƒ ロックは、対象エントリーに対して保持
– Optimistic(デフォルト)
• アクセス時のみ、ロックを保持
• コミット時に更新オブジェクトのバージョンを確認、矛盾する場合は例外を発生
– 参照: OptimisticCallbackプラグイン
• get/getAll/getForUpdate/getAllForUpdate: アクセス時に共有ロックを獲得
• put/putAll/remove/removeAll/insert/update/touch:コミット時に排他ロックを獲得
– Pessimistic
• アクセス時から、トランザクション終了までロックを保持
• get/getAll: 共有ロックを獲得
• getForUpdate/getAllForUpdate: 更新ロックを獲得
• put/putAll/remove/removeAll/insert/update/touch:排他ロックを獲得
– None
ロック間の互換性
• ロックを保持しない
ƒ ロック待ちタイムアウト
– BackingMapはロック待ちのタイムアウト値
を持ち、初期化前であれば変更可能
43
ロックの
S(共有)
U(更新)
X(排他)
種類
ロック
強度
S(共有)
可
可
不可
弱
U(更新)
可
不可
不可
通常
X(排他)
不可
不可
不可
強
© 2009 IBM Corporation
WXSを使ってみる(1)
ƒ 評価版のダウンロード
– http://www.ibm.com/developerworks/downloads/ws/wsdg/
(IBMサイトへのユーザー登録が必要)
44
© 2009 IBM Corporation
WXSを使ってみる(2)
ƒ JDK1.5以上を導入しておく
ƒ 評価版(zipファイル)をダウンロードし、展開する
※以後、展開先を<OG_HOME>と表記
ƒ <OG_HOME>¥gettingstarted¥env.batを修正
– 環境に合わせてJAVA_HOMEを修正する
ƒ Catalog Serverを起動する
– <OG_HOME>¥gettingstarted¥runcat.bat
ƒ Grid Containerを起動する
– <OG_HOME>¥gettingstarted¥runcontainer.bat <コンテナ名>
45
© 2009 IBM Corporation
xsadmin
ƒ <OG_HOME>¥bin¥xsadmin.bat
– ObjectGridのモニタリングツール(サンプル)
– Catalog ServerのMBeanに接続し、各種情報を表示
主なオプション
46
-containers
コンテナーのリストを表示
-primaries
プライマリーを表示
-unassigned
未割当の区画を表示
-mapsizes
すべてのマップのサイズを表示
-hosts
ホスト一覧を表示
-mbeanservers
MBeanサーバーのエンドポイントを表示
© 2009 IBM Corporation
構造を持つオブジェクトの操作 ~EntityManager~
オブジェクト間の関連を含むエンティティ をBackingMapに格納
Department
KT123
Employee
12345
"Takashi Itoh"
Employee
67890
"Hiroshi Yamamoto"
Department Map
KT123 Technical Support
・・・
Mapを意識しない、JPAライクなコーディングが可能
Employee Map
12345 Takashi Itoh
67890 Hiroshi Yamamoto
@Entity(accessType=AccessType.FIELD)
public class Department{
@Id
public String departmentID;
@OneToMany(targetEntity = Employee.class, cascade = CascadeType.PERSIST)
public java.util.List<Employee> members = new java.util.ArrayList();
public String DepartmentName;
EntityManager entityManager = objectGrid.getSession().getEntityManager();
・・・
EntityTransaction transaction = entityManager.getTransaction();
}
transaction.begin();
Department department=new Department("A123", "Technical Support");
department.members.add(new Employee("11111", "Takashi", "Itoh"));
entityManager.persist(department);
transaction.commit();
© 2009 IBM Corporation
Entity ManagerによるオブジェクトのCRUD
新規エンティティの追加: persist
transaction.begin();
Employee employee = new Employee("123", "Takashi", "Itoh");
entityManager.persist(employee);
transaction.commit();
エンティティの検索:find
Employee employee = (Employee)entityManager.find(Employee.class, "123");
エンティティの削除:remove
taransaction.begin();
Employee employee = (Employee)entityManager.find(Employee.class, "123"));
entityManager.remove(foundEmployee );
transaction.commit();
エンティティの更新
transaction.begin();
Employee employee = (Employee)entityManager.find(Employee.class, "123");
foundEmployee.hireDate = (new GregorianCalendar(1992,4,1)).getTimeInMillis();
transaction.commit();
© 2009 IBM Corporation
オブジェクトの集合操作 ~ObjectGrid Query~
tran.begin();
Query query = em.createQuery("SELECT e FROM Employee e WHERE e.firstName like :fname");
query.setParameter("fname", “Tomo%");
Iterator<Employee> results = query.getResultIterator();
while(results.hasNext()){
Employee employee = results.next();
System.out.println("Result : "+employee.firstName+" "+employee.lastName);
}
tran.commit();
ƒ ObjectGrid Query: EJB2.1規定のEJB QLベースのオブ
ジェクト照会言語をサポート
¾
主なサポート機能
集約関数
AVG
COUNT
MAX
MIN
SUM
49
条件記述
BETWEEN
IN
IS NULL
MEMBER OF
EXISTS
IS EMPTY
LIKE
並べ替え
ORDER BY
グループ化
GROUP BY
HAVING
結合
INNER JOIN
OUTER JOIN
© 2009 IBM Corporation
WXSのMap/Reduce機能
50
© 2009 IBM Corporation
DataGrid Agent
アプリケーション・ロジックをデータ上で実行する
真にリアル・タイムの応答性能を求められるシステムではネットワークにアクセスする
時間も回避したい
–
データをアプリケーションに持ってくるのではなく、
「アプリケーションをデータに持っていく」
「データ上で、アプリケーションを実行する」
DataGrid Agent
・・・
–
・・・
ƒ
IP Sprayer
Web Server/
Web Container
51
© 2009 IBM Corporation
並列分散データ処理 ~MapGridAgent~
ƒ MapGridAgent
– 全て/指定された条件のパーティションに対し処理を行い、処理結果を取得したい場合
に使用
interface MapGridAgent{
java.lang.Object process(Session s, ObjectMap map, java.lang.Object key);
java.util.Map processAllEntries(Session s, ObjectMap map);
}
– AgentManagerのcallMapAgent( )メソッドで実行
• パーティションをホストする各JVM上でprocess()が実行され、結果をMapで戻す
• callMapAgent(MapGridAgent agent, java.util.Collection key)
– 各パーティションで、指定されたkeyに対して process()が呼ばれる
• callMapAgent(MapGridAgent agent)
– 各パーティションでprocessAllEntries()がまず呼び出される
このメソッド内で、クエリーなどを利用して
処理対象の絞込みを行いMapを返す
– processAllEntries()で抽出した各キーに対して
process()が呼び出される
GridAgent
Partition #0
BackingMap
GridAgent
process( )
AgentManager
GridAgent
Partition #1
BackingMap
process( )
52
© 2009 IBM Corporation
並列分散データ処理 ~ReduceGridAgent~
ƒ ReduceGridAgent
– 全て/指定された条件のエントリーから、単一の処理結果(平均、最大値など)を返す
interface ReduceGridAgent{
java.lang.Object reduce(Session s, ObjectMap map, java.util.Collection keyList);
java.lang.Object reduce(Session s, ObjectMap map);
java.lang.Object reduceResults(java.util.Collection results);
}
– AgentManagerのcallReduceAgent( )メソッドで実行
• callReduceAgent(ReduceGridAgent agent, java.util.Collection key)
– 各パーティションで、指定されたkeyを対象に reduce(s,map,keyList)が呼ばれる
– 最後に、クライアント側で reduceResults(Collection results)が呼ばれる
• callReduceAgent(ReduceGridAgent agent)
この区画では最大値は a
GridAgent
– 各パーティションで、全てのエントリーを対象にreduce(s,map)が呼ばれる
– 最後に、クライアント側で
reduceResults(Collection results)が呼ばれる
GridAgent
AgentManager
BackingMap
reduce( )
GridAgent
Partition #1
BackingMap
reduceResults( )
全体での最大値は b
Partition #0
reduce( )
この区画では最大値は b
53
© 2009 IBM Corporation
WXS応用例:solidDB Cluster
54
© 2009 IBM Corporation
応用例)WXS + solidDB = solidDB Cluster
多数のインメモリDB(solidDB)を、強力なクラスタ基盤(WXS)で統合した
ソリューション
ƒ お客様の課題
ƒ solidDB Clusterによる解決
– 高速・高スケーラビリティ
– インメモリDB+マトリクス状クラスタ
– 高信頼化
– 自動障害回復
– ノンストップオペレーション
– 動的クラスタ
– ベンダーロックイン回避
– SQL/JDBCとMap/EntityManagerの両方に
対応
Appサーバ
solidDB
HTTPサーバ
solidDB
負荷分散装置
Appサーバ
HTTPサーバ
solidDB
solidDB
solidDB
solidDB
solidDB
solidDB
solidDB
負荷分散装置
solidDB Cluster
WXS
ƒ スケールアウト+クラスタ+HA
ƒ スケールアップ+BigBox+HA
高速・高スケーラビリティ
○
高速・高スケーラビリティ
高信頼
○
高信頼
ノンストップオペレーション
○
ノンストップオペレーション
ベンダーロックイン回避
○
ベンダーロックイン回避
55
ƒ スケールアウト+クラスタ+HA
ƒ スケールアウト+クラスタ+HA
高速・高スケーラビリティ
○
高速・高スケーラビリティ
○
○
高信頼
○
高信頼
○
○
ノンストップオペレーション
○
ノンストップオペレーション
○
○
ベンダーロックイン回避
○
ベンダーロックイン回避
○
© 2009 IBM Corporation
BASE
solidDB Clusterの利点:
独自技術による非同期レプリケーションの高性能化
既存技術の問題点
ƒ マスターDBのレプリカ処理が重くなり,レプリカDB数に対してスケールしない
ƒ DBクラスタと別機構となり,動的クラスタ管理機構と連動できない
solidDB Clusterのレプリケーション機構
ƒ 独自の伝播型レプリケーションにより,高いスケーラビリティと
高速なレプリケーションを提供
Master DB
2ライン伝播の場合
ƒ クラスタ構成と連動したレプリケーション
Replica
DB
solidDB
既存のレプリケーション機構
Master DB
数十バイトのレ
コード1000件を8
サーバに転送する
のに約350ミリ秒
Replica
DB
solidDB
Replica
DB
solidDB
Replica Replica Replica ReplicaReplica Replica Replica
DB
DB
DB
DB
DB
DB
DB
Replica
DB
solidDB
56
Replica
DB
solidDB
Replica
DB
solidDB
Replica
DB
solidDB
Replica
DB
solidDB
© 2009 IBM Corporation
solidDB Clusterの利点:動的クラスタ
ƒ クラスタ全体を停止せずにノ
ード・プロセスの追加・削除
が可能
アプリケーションサーバ
ƒ DBキャッシュ機能と連動し,
クライアントが自動的に新し
いノードにも接続し,負荷分
散
solidDB Cluster JDBC Driver
solidDB
停止
solidDB
solidDB
solidDB
solidDB
solidDB
solidDB
solidDB
solidDB
solidDB
追加
ƒ 非同期レプリケーション機能
と連動し,バックエンドDBの
データ更新も即座に反映
solidDB Cluster
WXS
DBMS
57
© 2009 IBM Corporation
さらなる機能:データグリッド機能によるデータ集約処理の実現
Java+SQL
Grid
Agent
Java+SQL
ƒ Map-Reduce並列処理
– 検索処理の場合,複数のレプ
リカサーバで負荷分散させ,多
数のMap-Reduce処理の実行
が可能
solidDB Cluster Client Driver (JDBC/GridAgent)
Grid
Agent
Grid
Agent
solidDB Cluster
WXS
ƒ 更新結果の集約とDB書き込み
– データ分割させたsolidDB群で
更新処理を負荷分散
– 複数のsolidDB群で分割された
データを集約してバックエンド
DBへの書き込み
solidDB Cluster Client Driver (JDBC)
Java+SQL
更新
Grid
Agent
GridAgentはsolidDBデータベースと
同じプロセスで処理を実行するため,
非常に高速にDBアクセス可能
58
Grid
Agent
Grid
Agent
Grid
Agent
Grid
Agent
Grid
Agent
Grid
Agent
solidDB Cluster
WXS
集約結果
書き込み
DB
© 2009 IBM Corporation
まとめ
ƒ クラウド的なインフラに適したデータストアの特性
– スケーラビリティ、アベイラビリティが重要
ƒ WebSphere eXtreme Scale
– スケーラブル・エンタプライズ・データストア
• 自律的な可用性と動的なスケーラビリティ
• トランザクション/セキュリティのサポート
ƒ WebSphere eXtreme Scaleの適用
– キャッシュ
– 分散オブジェクトストア
– 既存のソフトウェアとの組み合わせ
• O/R マッパー (Hibernate/OpenJPA)
• インメモリRDB (solidDB)
59
© 2009 IBM Corporation
情報源
ƒ WebSphere Extended Deployment 製品紹介ページ
(日本語) http://www-06.ibm.com/jp/software/websphere/ft/was/xd/v61/
(英語) http://www-306.ibm.com/software/webservers/appserv/extend/
ƒ WebSphere Developer Domain(技術情報)
http://www.ibm.com/developerworks/jp/websphere/category/wxd/index.html
ƒ オンライン・マニュアル
http://www-306.ibm.com/software/webservers/appserv/extend/library/
ƒ 製品サポート情報ページ
http://www-306.ibm.com/software/webservers/appserv/extend/support/
ƒ WXS フル機能評価版ダウンロード ※起動後、8時間経過まで継続利用可
http://www.ibm.com/developerworks/downloads/ws/wsdg/learn.html
ƒ IBM Redbooks "User's Guide to WebSphere eXtreme Scale"
http://www.redbooks.ibm.com/abstracts/sg247683.html
ƒ WXS Wiki
http://www.ibm.com/developerworks/wikis/display/objectgrid/Getting+started
60
© 2009 IBM Corporation
近日開催予定セミナーのご案内
ƒ 6/3 (水) 10:00-12:00
– これでわかるsolidDB: インメモリーDBとsolidDB Cluster (WebSphere eXtreme
Scale)
@渋谷 ソフトウェア・コンピテンシー・センター
– http://www-06.ibm.com/itsolutions/jp/solutions/leveraginginformation/events/iodseminar/sem6.html
ƒ 6/11(木) 10:00-12:00
– SOA Technology Days 「【3-1】 超高速トランザクションへの対応」
@箱崎事業所 711セミナールーム
– ibm.com/jp/bk/soatd/
または
http://www-06.ibm.com/itsolutions/jp/solutions/businessflexibility/events/soa_techdays/index.html
ƒ 6/16 (火)
※1日開催、午前は上記セミナーの再演となります
– (仮) 一日でわかる分散オブジェクト・キャッシュとインメモリーDB
@渋谷 ソフトウェア・コンピテンシー・センター
– 申し込みページオープン前のため、ご参加を希望される場合はアンケート用紙
に「6/16セミナー受講希望」とご記入いただき、ご連絡先をご記入ください。
61
© 2009 IBM Corporation
© IBM Corporation 2009. All Rights Reserved.
ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の目的のみで提供されており、いかなる参加
者に対しても法律的またはその他の指導や助言を意図したものではなく、またそのような結果を生むものでもありません。本プレゼンテーションに含まれている情報については、完全性と正確性を
帰するよう努力しましたが、「現状のまま」提供され、明示または暗示にかかわらずいかなる保証も伴わないものとします。本プレゼンテーションまたはその他の資料の使用によって、あるいはその
他の関連によって、いかなる損害が生じた場合も、IBMは責任を負わないものとします。 本プレゼンテーションに含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかなる
保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約の条項を変更することを意図したものでもなく、またそのような結果を生むものでもありま
せん。
本プレゼンテーションでIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を行っているすべての国でそれらが使用可能であることを暗示するものではありません。本プレゼ
ンテーションで言及している製品リリース日付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決定権をもっていつでも変更できるものとし、いかなる方法においても将来の製
品または機能が使用可能になると確約することを意図したものではありません。本資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上高の向上、またはその他の結果
が生じると述べる、または暗示することを意図したものでも、またそのような結果を生むものでもありません。
パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ス
トリームにおけるマルチプログラミングの量、入出力構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーが
ここで述べられているものと同様の結果を得られると確約するものではありません。
記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示されたものです。実際の環境コストおよびパフォー
マンス特性は、お客様ごとに異なる場合があります。
以下は、International Business Machines Corporationの米国およびその他の国における商標。IBMの全商標のリストについては、
www.ibm.com/legal/copytrade.shtmlをご覧ください。
AIX, CICS, CICSPlex, DB2, DB2 Universal Database, i5/OS, IBM, the IBM logo, IMS, iSeries, Lotus, OMEGAMON, OS/390, Parallel Sysplex, pureXML, Rational, RCAF, Redbooks,
Sametime, Smart SOA, System i, System i5, System z , Tivoli, WebSphere, z/OS.
JavaおよびすべてのJava関連の商標およびロゴは Sun Microsystems, Inc.の米国およびその他の国における商標。
Microsoft, Windows, Windows NT および Windowsロゴは Microsoft Corporationの米国およびその他の国における商標。
Intel, Intelロゴ, Intel Inside, Intel Insideロゴ, Intel Centrino, Intel Centrinoロゴ, Celeron, Intel Xeon, Intel SpeedStep, Itanium, Pentium は Intel Corporationまたは子会社の米国およびその
他の国における商標または登録商標。
UNIXはThe Open Groupの米国およびその他の国における登録商標。
Linuxは、Linus Torvaldsの米国およびその他の国における商標。
その他の会社名、製品名およびサービス名等はそれぞれ各社の商標。
© 2009 IBM Corporation
Fly UP