Top Banner
Infinispan Open Source Data Grid Red Hat Senior Software Maintenance Engineer Takayoshi Kimura
22

Infinispan - Open Source Data Grid rev2

Jan 18, 2015

Download

Technology

nekop

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Infinispan - Open Source Data Grid rev2

Infinispan

Open Source Data Grid

Red HatSenior Software Maintenance Engineer

Takayoshi Kimura

Page 2: Infinispan - Open Source Data Grid rev2

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

Page 3: Infinispan - Open Source Data Grid rev2

What is Data Grid?

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

• 何ができるの?– 同上

• メモリ上の RAID

Page 4: Infinispan - Open Source Data Grid rev2

Infinispan とは

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

• JSR-107 JCache

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

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

性が高い

Page 5: Infinispan - Open Source Data Grid rev2

ユースケース

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

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

する

Page 6: Infinispan - Open Source Data Grid rev2

キャッシュ

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

Page 7: Infinispan - Open Source Data Grid rev2

キャッシュ

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

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

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

Page 8: Infinispan - Open Source Data Grid rev2

分散キャッシュ

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

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

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

Page 9: Infinispan - Open Source Data Grid rev2

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

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

をトリガ• JBoss AS でも利用

Page 10: Infinispan - Open Source Data Grid rev2

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

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

Page 11: Infinispan - Open Source Data Grid rev2

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

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

バリ• データの分散処理

– Distributed Executor– MapReduce

Page 12: Infinispan - Open Source Data Grid rev2

データ分散配置デモ

• infinispan-scala-swing-demo

Page 13: Infinispan - Open Source Data Grid rev2

Eviction

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

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

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

するか– LRU, MRU, LFU, LIRS

Page 14: Infinispan - Open Source Data Grid rev2

LRU

• Least Recently Used

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

Page 15: Infinispan - Open Source Data Grid rev2

LRU

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

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

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

消される

Page 16: Infinispan - Open Source Data Grid rev2

LIRS

• Low Inter-reference Recency set

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

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

Page 17: Infinispan - Open Source Data Grid rev2

Distributed Execution Framework

• Distributed Executor

• MapReduce

Page 18: Infinispan - Open Source Data Grid rev2

Infinispan Query

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

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

Page 19: Infinispan - Open Source Data Grid rev2

Hibernate OGM

• Object Grid Mapping

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

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

Grid

• 他の Grid にも対応予定

Page 20: Infinispan - Open Source Data Grid rev2

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

Page 21: Infinispan - Open Source Data Grid rev2

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

Page 22: Infinispan - Open Source Data Grid rev2