Download - WebLogic Server ~ Oracle Coherenceとの親和性
Oracle Cohenrece Oracle WebLogic Server との親和性
日本オラクル株式会社
Fusion Middleware事業統括本部 2013年9月26日
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 3
Oracle Coherence 概要
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 4
インメモリデータグリッド インメモリデータグリッド(IMDG)製品とは
データベース アプリケーション
高速性を重視する場合のデータベースアクセスの限界
予測不能なデータの増加に対する柔軟な拡張性
データベース アプリケーション
インメモリのデータに高速にアクセス可能
分散してデータを管理し、柔軟な拡張性
従来のシステムの課題
インメモリデータグリッドによる課題の解決
インメモリデータグリッド
大量の処理を高速に処理したい
データの増加に合わせて拡張性の高いソリューションが必要だ
データを複数サーバのメモリに分散してキャッシュ
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 5
Key Value Store (KVS) KVSとは(RDBMSとの比較)
KVS RDBMS
仕
組
み
Key(キー)とValue(値)のシンプルなデータ構造をストアする仕組み
二次元表のデータ構造を管理する仕組み
ア
ク
セ
ス
方
式
APIによるアクセス
java.util.Mapインターフェースの場合(Coherence)
SQLによるアクセス
Key Value
従業員 番号:150
従業員 名前:オラクル 生年月日:3月1日 役職:課長
SELECT EMP_NAME FROM EMP_TABLE; データの参照
INSERT INTO EMP_NAME VALUES(28 , ‘ABC’); 挿入
public static void main(){ NamedCache cache = …; cache.get(28); // データの参照 cache.put(28 , emp); // データの挿入更新 }
データベース
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 6
Oracle Coherence
インメモリデータグリッド製品
– 複数サーバに渡る分散KVS
分散データの可用性
サーバの動的な追加・縮退に
対する自動リバランス機能
– 様々なデータ処理機能
In-Place Processing
データストア連携
イベント通知機能
– 高度なクラスタ管理機能
製品概要①
クライアント(Java, .NET, C++)
イベント
通知
DB
データストア連携
Webサービス
WAN
File
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 7
Oracle Coherence
Coherence
– Javaのクラスライブラリ(100% Pure Java)
– クライアント向けライブラリは Java / C++ / .Net
– REST API経由で、さまざまな言語からHTTPによるアクセスが可能
JavaScript/Python/Ruby/PHP etc
製品概要②
性能面(パフォーマンス)の向上だけでなく
各種プラットフォームにも対応し
可用性や拡張性も担保したIMDG製品
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 8
キャッシュデータの要件
キャッシュデータの要件 – Key/Valueともにシリアライズ可能な任意のオブジェクト
– KeyクラスはhashCode()/equals()メソッドが必要
Portable Object Format(POF) – Coherenceが提供するシリアライズ/デシリアライズの仕組み
Java/C++/.NET間アプリケーション間での共通データフォーマット
– com.tangosol.coherence.io.pof.PortableObjectインタフェースの実装とPOF構成ファイルへの登録を行うことにより構成
– Java標準(java.io.Serialize)より、シリアライズ後のサイズを小さくすることが可能
Serialization Time(ms) De-Serialization Time(ms) Size(bytes)
Java Serializable 2369 10078 867
POF 547 1234 186
Java標準とPOFの比較例
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 9
Oracle Coherence
プライマリに対してバックアップを持つことで可用性を担保
– パーティション単位で配置を決定
– バックアップは物理的に異なるマシン上に作成される(Machine-Safe)
分散データの可用性
JVM1 JVM2
物理サーバA
JVM3 JVM4
物理サーバB
JVM5 JVM6
物理サーバC
JVM7 JVM8
物理サーバD
P
B
P P P P P P P
B B B B B B B
1
1
2
2
3 4
3 4
5 6
5 6
7 8
7 8
P:プライマリ / B:バックアップ
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 10
インメモリデータの可用性
Machine 1
障害時はバックアップからデータを復旧させる
障害復旧の最小単位はパーティション単位 ① 無くなったプライマリをバックアップから復旧(インメモリで昇格)
② マシンセーフのためのプライマリの均等化(ネットワーク経由で移動)
③ バックアップの再作成(ネットワーク経由でコピー)
JVM 1
P
B
JVM 2
P
B
1 2
3 5
Machine 2
JVM 3
P
B
JVM 4
P
B
3 4
1 7
Machine 3
JVM 5
P
B
JVM 6
P
B
5 6
2 8
Machine 4
JVM 6
P
B
JVM 8
P
B
7 8
6 4
P: プライマリ
B: バックアップ
5
6
2
8
2
6 5 1
1
2 3
3 3 3
1
2
3
補足情報
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 11
データの存在する場所(JVM)で処理を実行する
– 無駄なデータ送受信を行わない
– Process-Data Affinity
Partitioned Cacheではデータの分散に沿ったパラレル処理が可能に
– Partitioned Cacheでは対象データを持つキャッシュサーバ全体で実行される
– 各JVMでパラレルに実行
– 集計処理などの場合、結果は呼出し側で自動的にマージされる
Oracle Coherence In-place-proccesing
①データ取得(get)
③結果の格納(put)
②処理実行
APサーバ
①処理のInvoke
③結果を返却
②各JVMで分散
して処理実行
APサーバ
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 12
Partitioned Cacheによるスケーラビリティ
サーバ追加による性能の向上 Partitioned Cache
– データを分散してキャッシュ
– データの分散によりサーバ間で処理の負荷を分散
1. 処理性能の拡張
– サーバ追加により処理可能なリクエスト数を向上
– パラレル実行可能な処理の性能を向上
2. メモリ領域の拡張
– サーバ追加により分散キャッシュの
容量を拡張
JVM JVM JVM JVM JVM
アプリケーション
パラレル処理
サーバ追加 Coherenceデータグリッド
動的拡張
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 13
外部データソースとキャッシュデータの
自動的な連携
– キャッシュデータの変更をDBに反映
– キャッシュへの読取時にDBからデータを
取得してキャッシュに格納
キャッシュの更新処理
– 同期書き込み(デフォルト)
– 非同期書き込み
Oracle Coherence データソース連携
①データのput
②Coherenceが
INSERT文を発行
①データのget
②キャッシュに存在
しないので
SELECT文を発行
③SELECT
結果をキャッシュに格納
キャッシュの更新 キャッシュの参照
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 14
外部データソースへの非同期書込み
– デフォルトでは同期書込み
– 変更データをキューで管理し、指定した間隔で書出しを行う
メリット
– 同一データに対する複数更新を一括実行
発行されるSQLの減少
– 外部データソースの障害からアプリを隔離
書込み失敗 → リキュー → 次回以降のタイミングでリトライ
Oracle Coherence データソース連携 ― 非同期書き込み(Write - Behind)
UserA
age=10, money=100
↓
age=11, money=100
↓
age=11, money=300
例:UserAを2回更新
UPDATE user
SET age = 11, money = 300
WHERE id = ‘A’
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 15
Oracle Coherence イベント
イベントリスナー イベントを受け取るためのリスナーを登録
データの変更時にリスナーにイベントが通知される
– insert/update/deleteイベントを通知
– イベント受取り時に実行したい処理をリスナーに記述
フィルタによる条件指定でリスンする対象データの絞込み
– データ操作の種類
– Key/Valueの比較条件
イベントオブジェクトに格納される情報
– データ操作の種類
– 変更の前後データ
アプリケーション
Coherenceデータグリッド
JVM
A
JVM
B
JVM
C
JVM
D
③ イベント通知 ① リスナー登録 ② データ変更
Listener Listener
Filter
Event
Event
Event
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 16
Oracle WebLogic Server との親和性
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 17
Coherence*Web Coherence*Web
ブラウザ
Java EE
Web App
Java EE
Web App
Java EE
Web App
Java EE
Web App
ロードバランサ
Webサーバ
APサーバ
Coherence分散キャッシュ
(HTTPセッションを格納)
Coherenceの分散キャッシュを使用したHTTP
セッション管理機能
– アプリケーションの修正不要
HTTPセッション格納用のキャッシュをAPサーバとは別のJVMに構成
– APサーバの負荷軽減
– HTTPセッションのメモリ上限の向上
さまざまなAPサーバをサポート
– WebLogic/GlassFish/JBoss/Websphere etc
ASP.NETセッション管理用にSession Provider
を提供
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 18
Managed Coherence Servers WebLogic Server の管理容易性をCoherenceも利用可能
JVM JVM JVM JVM
start-cache.sh
運用管理者
Coherence Cluster
独自ツール
JVM JVM JVM JVM
運用管理者
Coherence Cluster
WebLogic 管理コンソール
マシン毎にJVM
プロセスの開始、停止コマンドを投入するのは人為ミスの危険もあるし、大変
独自ツールはとても便利だが開発コストがかかる
WebLogic ドメイン
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 19
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 20