Infinispan - Open Source Data Grid rev2

Post on 18-Jan-2015

1052 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

Transcript

Infinispan

Open Source Data Grid

Red HatSenior Software Maintenance Engineer

Takayoshi Kimura

Memory is the new disk, disk is the new tape.

What is Data Grid?

• 複数のマシンに分散配置されている大量のデータに高速にアクセスできるミドルウェア

• 何ができるの?– 同上

• メモリ上の RAID

Infinispan とは

• JBoss で使われていたクラスタリングライブラリ JBoss Cache が起源

• JSR-107 JCache

• JSR-347 Data Grids for Java– スペックリードは Infinispan 作者の Manik

Surtani– Java EE 7 で JSR-347 が収録される可能

性が高い

ユースケース

• キャッシュとして利用する• 分散キャッシュとして利用する• クラスタリングライブラリとして利用

する• インメモリデータグリッドとして利用

する

キャッシュ

• ConcurrentHashMap の代わりに– より高い並列性– 古いエントリを消す– 古いエントリをディスクや DB へ– イベントリスナサポート– トランザクション連携

キャッシュ

• データベースのキャッシュ– Hibernate の 2nd level キャッシュ

• ビューのキャッシュ– Seam のビューフラグメントキャッシュ

• 読み込むコストの高いデータに適用– Read-most が原則– そうではない場合逆に遅くなる可能性

分散キャッシュ

• クラスタ対応キャッシュ– 使い方はローカルキャッシュと一緒– ローカルキャッシュでは複数 VM からは利

用できない– 例えば DB のキャッシュとして利用してい

て、別ノードが DB とキャッシュを更新したらどうする?

クラスタリングライブラリ

• 「クラスタ対応」したいときに– 複数ノード間でのデータの共有– イベントリスナを利用して各ノードで処理

をトリガ• JBoss AS でも利用

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

• 大量のデータ• 高速アクセス• 非同期でディスク書き出し• 分散処理

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

• データの分散配置– コンシステントハッシュと仮想ノード– 遠隔地クラスタリレー、ディザスターリカ

バリ• データの分散処理

– Distributed Executor– MapReduce

データ分散配置デモ

• infinispan-scala-swing-demo

Eviction

• アクセスされないデータを追い出す– Passivation モードだとディスクなどに書

き出す– そうではない場合は単に消す

• キャッシュアルゴリズム– どのように「アクセスされない」を決定

するか– LRU, MRU, LFU, LIRS

LRU

• Least Recently Used

• 最もアクセスが無い期間が長いデータを追い出す– 最新のものをキープする– 単純なユースケースに最適

LRU

• 最新 != ホット– 1000 のデータ、 200 のキャッシュ– 例えばバッチ処理で全データ一回舐めるだ

けでキャッシュがめちゃくちゃに• 一回だけたまたまアクセスされたエン

トリが長く生き残る• アクセスが偏るとホットなエントリが

消される

LIRS

• Low Inter-reference Recency set

• 二つの領域– LIR エリア – ホットなキー– HIR エリア – 最近のキー

• シンプルなアクセス履歴を保持– ホットなキーを長期保持

Distributed Execution Framework

• Distributed Executor

• MapReduce

Infinispan Query

• key-value ストアに格納した value に対する全文検索

• Hibernate Search を内部的に利用• Hibernate Search とほぼ同じ API

Hibernate OGM

• Object Grid Mapping

• JPA インタフェースで Grid からデータを取得

• Hibernate プロジェクト下で開発• Infinispan が最初にサポートされる

Grid

• 他の Grid にも対応予定

References

• Infinispan ユーザガイド– https://docs.jboss.org/author/display/ISPN/User+Guide

• JBoss World 2011– http://www.redhat.com/summit/2011/presentations/jbossworld/

• JUDCon 2011– http://www.jboss.org/events/JUDCon/presentations.html

Memory is the new disk, disk is the new tape.

top related