20
Oracle Cohenrece Oracle WebLogic Server との親和性 日本オラクル株式会社 Fusion Middleware事業統括本部 2013926

WebLogic Server ~ Oracle Coherenceとの親和性

Embed Size (px)

DESCRIPTION

第40回WebLogic Server勉強会の資料 Oracle Coherenceは、インメモリデータグリッド製品の一つで、システムの可用性、拡張性を担保しながら、分散キャッシュや分散実行によりパフォーマンス の大幅な向上に寄与します。今では国内外のミッションクリティカルな領域で採用されています。本セッションでは、初めに Coherenceの 概要に触れ、WebLogic Serverとの連携・統合機能を紹介します。 日本オラクル株式会社 Fusion Middleware事業統括本部 松林 晶

Citation preview

Page 1: WebLogic Server ~ Oracle Coherenceとの親和性

Oracle Cohenrece Oracle WebLogic Server との親和性

日本オラクル株式会社

Fusion Middleware事業統括本部 2013年9月26日

Page 2: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 2

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。

Page 3: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 3

Oracle Coherence 概要

Page 4: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 4

インメモリデータグリッド インメモリデータグリッド(IMDG)製品とは

データベース アプリケーション

高速性を重視する場合のデータベースアクセスの限界

予測不能なデータの増加に対する柔軟な拡張性

データベース アプリケーション

インメモリのデータに高速にアクセス可能

分散してデータを管理し、柔軟な拡張性

従来のシステムの課題

インメモリデータグリッドによる課題の解決

インメモリデータグリッド

大量の処理を高速に処理したい

データの増加に合わせて拡張性の高いソリューションが必要だ

データを複数サーバのメモリに分散してキャッシュ

Page 5: WebLogic Server ~ Oracle Coherenceとの親和性

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); // データの挿入更新 }

データベース

Page 6: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 6

Oracle Coherence

インメモリデータグリッド製品

– 複数サーバに渡る分散KVS

分散データの可用性

サーバの動的な追加・縮退に

対する自動リバランス機能

– 様々なデータ処理機能

In-Place Processing

データストア連携

イベント通知機能

– 高度なクラスタ管理機能

製品概要①

クライアント(Java, .NET, C++)

イベント

通知

DB

データストア連携

Webサービス

WAN

File

Page 7: WebLogic Server ~ Oracle Coherenceとの親和性

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製品

Page 8: WebLogic Server ~ Oracle Coherenceとの親和性

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の比較例

Page 9: WebLogic Server ~ Oracle Coherenceとの親和性

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:バックアップ

Page 10: WebLogic Server ~ Oracle Coherenceとの親和性

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

補足情報

Page 11: WebLogic Server ~ Oracle Coherenceとの親和性

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サーバ

Page 12: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 12

Partitioned Cacheによるスケーラビリティ

サーバ追加による性能の向上 Partitioned Cache

– データを分散してキャッシュ

– データの分散によりサーバ間で処理の負荷を分散

1. 処理性能の拡張

– サーバ追加により処理可能なリクエスト数を向上

– パラレル実行可能な処理の性能を向上

2. メモリ領域の拡張

– サーバ追加により分散キャッシュの

容量を拡張

JVM JVM JVM JVM JVM

アプリケーション

パラレル処理

サーバ追加 Coherenceデータグリッド

動的拡張

Page 13: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 13

外部データソースとキャッシュデータの

自動的な連携

– キャッシュデータの変更をDBに反映

– キャッシュへの読取時にDBからデータを

取得してキャッシュに格納

キャッシュの更新処理

– 同期書き込み(デフォルト)

– 非同期書き込み

Oracle Coherence データソース連携

①データのput

②Coherenceが

INSERT文を発行

①データのget

②キャッシュに存在

しないので

SELECT文を発行

③SELECT

結果をキャッシュに格納

キャッシュの更新 キャッシュの参照

Page 14: WebLogic Server ~ Oracle Coherenceとの親和性

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’

Page 15: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 15

Oracle Coherence イベント

イベントリスナー イベントを受け取るためのリスナーを登録

データの変更時にリスナーにイベントが通知される

– insert/update/deleteイベントを通知

– イベント受取り時に実行したい処理をリスナーに記述

フィルタによる条件指定でリスンする対象データの絞込み

– データ操作の種類

– Key/Valueの比較条件

イベントオブジェクトに格納される情報

– データ操作の種類

– 変更の前後データ

アプリケーション

Coherenceデータグリッド

JVM

JVM

B

JVM

C

JVM

D

③ イベント通知 ① リスナー登録 ② データ変更

Listener Listener

Filter

Event

Event

Event

Page 16: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 16

Oracle WebLogic Server との親和性

Page 17: WebLogic Server ~ Oracle Coherenceとの親和性

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

を提供

Page 18: WebLogic Server ~ Oracle Coherenceとの親和性

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 ドメイン

Page 19: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 19

Page 20: WebLogic Server ~ Oracle Coherenceとの親和性

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 20