Comments
Description
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