5. 目次
1. Infinispanとは?
① Infinispanプロフィール
② Data Gridとは?
2. Infinispanの使い方~KVS編~
① 動作モードの分類
② プロセスの関係による分類
• Client-Server modeで利用できるプロトコル
③ データ保持方式による分類
3. Infinispanの使い方~Data Grid編~
① Cache Store
② Distributed Executors
③ MapReduce
④ Query API
⑤ Grid File System
4. まとめ
4
Advanced Tech Night
7. Infinispanプロフィール
1. JBossファミリーの(In-Memory) Data Grid
Platform
2. 公式サイト
http://www.jboss.org/infinispan.html
3. JavaとScalaで記述されたOSS
4. ライセンスはLGPL v2.1
5. 主なコミッタはRed Hat社に所属
6. 2012年8月、ようやく本が出版
「Infinispan Data Grid Platform」
6
Advanced Tech Night
8. Data Gridとは?(1/5)
Data Gridに求められること
分散システム
1. extreme scalability
サーバ増加により、線形にスケールアウトできる
分散システム
2. high availability
障害が発生しづらい。発生時も素早く復旧できる
3. elastic data NoSQL
様々な形式のデータを扱うことができる
4. support for compute grids Data Grid
複数のサーバが結びつき、全体でひとつの処理を実行できる
7
Advanced Tech Night
9. Data Gridとは?(2/5)
Data Gridとは?(概ねこんな認識)
① サーバ分散による高速データアクセス
→線形にスケールアウト
② 様々なデータを扱える
→Infinispanの場合は、Javaオブジェクト
③ Jobを各サーバで分散実行可能
→各サーバに処理を配布
→ローカルデータにアクセスすることで高速化
→MapReduce等
さらに、InfinispanはIn-Memory Data Grid
8
Advanced Tech Night
10. Data Gridとは?(3/5)
Data Gridの主な適用箇所
① Webシステムにおけるセッション情報の保持
複数サーバで
Infinispan セッション情報を共有
Web/AP
サーバ
Infinispan
Web/AP
RDBMS
サーバ
Infinispan
Web/AP
サーバ
9
Advanced Tech Night
11. Data Gridとは?(4/5)
Data Gridの主な適用箇所
② DBのキャッシュ(low latencyでデータアクセス)
DBのキャッシュを分散保持し
大量データに高速アクセス
Web/AP
サーバ
Infinispan
Web/AP
Infinispan RDBMS
サーバ
Infinispan
Web/AP
サーバ
10
Advanced Tech Night
12. Data Gridとは?(5/5)
Data Gridの主な適用箇所
③ 分散実行
複数サーバでの実行により
並列性を増し、高速処理を実現 Infinispan
サーバ
Infinispan
Job実行 サーバ
Infinispan
サーバ
11
Advanced Tech Night
19. Client-Server modeで利用できるプロトコル(1/4)
【REST】
① URLで操作対象のキーを指定
http://localhost:8080/infinispan/rest/CacheNam
e/key
② HTTPメソッドでInfinispanのメソッドを指定
No. HTTPメソッド Infinispanメソッド 備考
1 PUT put BODYにputする値を設定
2 GET get
3 DELETE remove
③ HTTPロードバランサで通信先サーバを選択
18
Advanced Tech Night
20. Client-Server modeで利用できるプロトコル(2/4)
【Memcached】
① KVSで利用される汎用的なプロトコル
② telnetでアクセスして、コマンドラインでCache操作
可能
// cacheにデータを格納
> set key value
// cacheからデータを取得
> get key
value
// cacheからデータを削除
> delete key
③ Client Appで通信先サーバを選択する実装が必要
19
Advanced Tech Night
21. Client-Server modeで利用できるプロトコル(3/4)
【Hot Rod】
① Infinispan固有のプロトコル
② Java, C#, Python, Rubyのクライアント有
③ 通信先サーバをAppから隠ぺい~Smart Routing
public static void main(String[] args) {
// cacheを取得
RemoteCacheManager manager = new RemoteCacheManager(“192.168.0.1:11223,192.168.0.2:11223”);
Cache<String, String> cache = manager.getCache(“CacheName”);
// cacheにデータを格納
cache.put(“key”, “value”);
// cacheからデータを取得
cache.get(“key”);
// cacheからデータを削除
cache.remove(“key”);
}
20
Advanced Tech Night
27. Data Gridとしての機能(1/5)
1. Cache Store
① データの永続化
② 永続化先 App Infinispan
• サポート済み
– File System
– RDBMS App Infinispan Shared
Store
– Amazon S3
– Cassandra
• 今後サポートされる予定
App Infinispan
– GlasterFS
26
Advanced Tech Night
28. Data Gridとしての機能(2/5)
2. Distributed Executors
① 分散実行機能
② データを保持しているサーバに処
理を配布し、バッチ実行
③ ディスクアクセスや
ネットワークアクセスを
極力減らして高速化
27
Advanced Tech Night
29. Data Gridとしての機能(3/5)
3. MapReduce
① 分散実行機能。Hadoopで有名なあの処理
② 処理の流れ(インプットデータは事前に保持)
1. Jobを実行する
2. データ保持しているサーバでMap処理を実行
3. 中間データをCacheに保存
4. データ保持しているサーバでReduce処理を実行
5. 結果をJobに返す
In ③ tmp
Infinispan ② Infinispan
Map ③ Reduce ④
①
⑤
Job実行
① In tmp ⑤
Job実行
Infinispan ③ Infinispan
②
Map Reduce ④
28
Advanced Tech Night
30. Data Gridとしての機能(4/5)
4. Query API
① 全文検索エンジンApache Luceneの
Lucene Directoryの実装
② put時にデータのindexを作成・保持する
③ Hibernate Search APIを使って検索
図は公式サイトのUser Guide「Querying Infinispan」より引用
https://docs.jboss.org/author/display/ISPN/Querying+Infinispan
29
Advanced Tech Night
31. Data Gridとしての機能(5/5)
5. Grid File System
① メモリ上のファイルシステム
② ファイルに高速アクセス
Meta
③ 2個のCacheで構成される Infinispan
File
• メタデータ(ファイル名)
• 実際のデータ Meta
Infinispan
④ Infinispanの標準機能で File
Replicationを実現 App
Meta
Infinispan
File
App
30
Advanced Tech Night
32. まとめ
1. Infinispanとは?
① In-Memory Data Grid
2. Data Gridとは?
① サーバ分散による高速データアクセス
② 様々なデータを扱える
③ Jobを各サーバで分散実行可能
3. KVSとしてのInfinispan
① プロセスの関係による分類
Embedded modeとClient-Server mode
② データ保持方式による分類
Replicated modeとDistributed mode
31
Advanced Tech Night
33. まとめ
4. Data GridとしてのInfinispan
No. 機能 概要 メリット/デメリット
1 Cache Store データ永続化 Infinispanが終了しても、
データが失われない
2 Distributed Executors 分散実行機能 データが存在するサーバ
一般的なタスクを実行 上で高速・並列処理
3 MapReduce 分散実行機能 データが存在するサーバ
MapReduce処理を実行 上で高速・並列処理
4 Query API 全文検索エンジン機能 複数サーバで高速に検
索
5 Grid File System メモリ上のファイルシステム ・ファイルアクセスが高速
・標準機能で冗長化
32
Advanced Tech Night