View
8.188
Download
1
Category
Preview:
DESCRIPTION
単なるキャッシュじゃないよ!?Infinispanの紹介
Citation preview
Advanced Tech Night No.05
単なるキャッシュじゃないよ!? データグリッドプラットフォーム
Infinispanの紹介 2012/09/20
Acroquest Technology
束野 仁政
自己紹介
束野 仁政(つかの さとゆき)
Acroquest Technology株式会社
@snuffkin
もやっています。フレンディングよろしく!
satoyuki
これまで経験した主な業務は、フレームワーク/プラットフォーム開発。
→基盤の開発に興味あります。
HadoopやInfinispan、Nettyを利用するプロジェクトを経験。
→ドキュメント少ない?OSSなら、ソースを読めばいいじゃない。
社内勉強会でCEPやMessagePackの解説を担当。
→流行りもの好き。
Advanced Tech Night
1
はじめに
「KVS」(Key-Value Store)という単語を
聞いたことがある人?
Advanced Tech Night
2
「NoSQL」という単語を聞いたことがある人?
「Data Grid」という単語を聞いたことがある人?
はじめに
Advanced Tech Night
3
Data Gridとは?
正確性に目をつむると、
高機能なKVS
ただし、 Infinispanは単なるKVSではない。
Data Grid Platform
目次
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. まとめ
Advanced Tech Night
4
Advanced Tech Night
5
Infinispanとは?
第1章
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」
Advanced Tech Night
6
Data Gridとは?(1/5)
Data Gridに求められること
1. extreme scalability サーバ増加により、線形にスケールアウトできる
2. high availability 障害が発生しづらい。発生時も素早く復旧できる
3. elastic data 様々な形式のデータを扱うことができる
4. support for compute grids 複数のサーバが結びつき、全体でひとつの処理を実行できる
Advanced Tech Night
7
分散システム
分散システム
NoSQL
Data Grid
Data Gridとは?(2/5)
Data Gridとは?(概ねこんな認識) ① サーバ分散による高速データアクセス
→線形にスケールアウト
② 様々なデータを扱える →Infinispanの場合は、Javaオブジェクト
③ Jobを各サーバで分散実行可能 →各サーバに処理を配布 →ローカルデータにアクセスすることで高速化 →MapReduce等
Advanced Tech Night
8
さらに、InfinispanはIn-Memory Data Grid
Data Gridとは?(3/5)
Data Gridの主な適用箇所
① Webシステムにおけるセッション情報の保持
Advanced Tech Night
9
Infinispan
Web/AP
サーバ
RDBMS
Infinispan
Web/AP
サーバ
Infinispan
Web/AP
サーバ
複数サーバで
セッション情報を共有
Data Gridとは?(4/5)
Data Gridの主な適用箇所
② DBのキャッシュ(low latencyでデータアクセス)
Advanced Tech Night
10
Web/AP
サーバ
RDBMS Web/AP
サーバ
Web/AP
サーバ
Infinispan
Infinispan
Infinispan
DBのキャッシュを分散保持し
大量データに高速アクセス
Data Gridとは?(5/5)
Data Gridの主な適用箇所
③ 分散実行
Advanced Tech Night
11
Infinispan
サーバ
Infinispan
サーバ
Infinispan
サーバ
Job実行
複数サーバでの実行により
並列性を増し、高速処理を実現
Advanced Tech Night
12
Infinispanの使い方 ~KVS編~
第2章
プロセスの関係による分類
データ保持方式による分類
Advanced Tech Night
13
No. 機能 概要 メリット/デメリット
1 Embedded mode ユーザが開発するアプリケーション(以下、App)と
同一JVMで動作
○AppからInfinispanを start/stopすることが可能
○Listener等、機能が豊富
2 Client-Server mode Appと別JVMで動作 ○様々なプロトコルが利用可 ○外部プロセスから利用可
○Appと独立して動作可能
No. 機能 概要 メリット/デメリット
1 Replicated mode 各データを全てのサーバが保持する
○読み込みが高速 ×書き込みに時間がかかる
2 Distributed mode 各データを一部のサーバが保持する
○書き込みが高速 ×読み込みに時間がかかる
プロセスの関係による分類(1/4)
1. Embedded mode
① ユーザが開発するAppと
同一JVMでInfinispanを
動作させる
② AppとInfinispanとの関係は1対1となる
Advanced Tech Night
14
図はManik Surtani 「Infinispan In-memory data grid meets NoSQL」より引用
http://www.slideshare.net/maniksurtani/infinspan-inmemory-data-grid-meets-nosql
プロセスの関係による分類(2/4)
2. Client-Server mode
① ユーザが開発するAppと別JVMで
Infinispanを動作させる
② AppのJVMから複数のServerに
アクセスする
③ Appが個々のサーバを意識しなくて
良いように、Clientライブラリ内で
隠ぺい可能
(Hod Rod)
Advanced Tech Night
15
図はManik Surtani 「Infinispan In-memory data grid meets NoSQL」より引用
http://www.slideshare.net/maniksurtani/infinspan-inmemory-data-grid-meets-nosql
プロセスの関係による分類(3/4)
Advanced Tech Night
16
public static void main(String[] args) { // cacheを取得 EmbeddedCacheManager manager = new DefaultCacheManager(); Cache<String, String> cache = manager.getCache(“CacheName”); // cacheにデータを格納 cache.put(“key”, “value”); // cacheからデータを取得 cache.get(“key”); // cacheからデータを削除 cache.remove(“key”); }
【Embedded mode】の実装例
1. Cacheにデータを格納・取得・削除する例
2. デフォルト設定で良いなら、これだけで利用可能
プロセスの関係による分類(4/4)
Advanced Tech Night
17
public static void main(String[] args) { // cacheを取得 RemoteCacheManager manager = new RemoteCacheManager(“192.168.0.1:11223”); Cache<String, String> cache = manager.getCache(“CacheName”); // cacheにデータを格納 cache.put(“key”, “value”); // cacheからデータを取得 cache.get(“key”); // cacheからデータを削除 cache.remove(“key”); }
【Client-Server mode】の実装例(Hot Rod)
1. 基本的なメソッドはEmbedded modeと同じ
2. サポートしているメソッドに違いあり
Client-Server modeで利用できるプロトコル(1/4)
【REST】
① URLで操作対象のキーを指定
http://localhost:8080/infinispan/rest/CacheNam
e/key
② HTTPメソッドでInfinispanのメソッドを指定
③ HTTPロードバランサで通信先サーバを選択
Advanced Tech Night
18
No. HTTPメソッド Infinispanメソッド 備考
1 PUT put BODYにputする値を設定
2 GET get
3 DELETE remove
Client-Server modeで利用できるプロトコル(2/4)
【Memcached】
① KVSで利用される汎用的なプロトコル
② telnetでアクセスして、コマンドラインでCache操作可能
③ Client Appで通信先サーバを選択する実装が必要
Advanced Tech Night
19
// cacheにデータを格納 > set key value // cacheからデータを取得 > get key value // cacheからデータを削除 > delete key
Client-Server modeで利用できるプロトコル(3/4)
【Hot Rod】
① Infinispan固有のプロトコル
② Java, C#, Python, Rubyのクライアント有
③ 通信先サーバをAppから隠ぺい~Smart Routing
Advanced Tech Night
20
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”);
}
Client-Server modeで利用できるプロトコル(4/4)
各プロトコルの特徴
※正式サポートしていないが、WebSocketのインタフェース有
分散環境でClient-Server modeを使う場合は
基本的にHot Rodを選択することに
なるのでは?
Advanced Tech Night
21
No. プロトコル プロトコルの 汎用性
利用可能な データ型
通信先サーバの選択
1 REST ○ △ String △ ロードバランサ
2 Memcached ○ △ String × App側で実装
3 Hot Rod × ○ 任意 ○ Smart Routing(自動選択)
データ保持方式による分類(1/2)
1. Replicated mode
① 各データを全てのサーバが保持する
② 読み込みが高速
③ 書き込みに時間がかかる
Advanced Tech Night
22
putしたデータは
全てのサーバに送信される
Infinispan
Infinispan App
Infinispan
①put
②replica
②replica
データ保持方式による分類(2/2)
2. Distributed mode
① 各データを一部のサーバが保持する
② 書き込みが高速
③ 読み込みに時間がかかる
Advanced Tech Night
23
putしたデータは
一部のサーバのみに送信される
Infinispan
Infinispan App
Infinispan
①put
②replica
replica
されないサーバ
Advanced Tech Night
24
Infinispanの使い方 ~Data Grid編~
第3章
InfinispanのData Gridとしての主な機能
Advanced Tech Night
25
No. 機能 概要 メリット/デメリット
1 Cache Store データ永続化 Infinispanが終了しても、データが失われない
2 Distributed Executors 分散実行機能 一般的なタスクを実行
データが存在するサーバ上で高速・並列処理
3 MapReduce 分散実行機能 MapReduce処理を実行
データが存在するサーバ上で高速・並列処理
4 Query API 全文検索エンジン機能 複数サーバで高速に検索
5 Grid File System メモリ上のファイルシステム ・ファイルアクセスが高速 ・標準機能で冗長化
Data Gridとしての機能(1/5)
1. Cache Store ① データの永続化
② 永続化先
• サポート済み
– File System
– RDBMS
– Amazon S3
– Cassandra
• 今後サポートされる予定
– GlasterFS
Advanced Tech Night
26
Infinispan App
Shared
Store Infinispan App
Infinispan App
Data Gridとしての機能(2/5)
2. Distributed Executors ① 分散実行機能
② データを保持しているサーバに処理を配布し、バッチ実行
③ ディスクアクセスや
ネットワークアクセスを
極力減らして高速化
Advanced Tech Night
27
Data Gridとしての機能(3/5)
3. MapReduce ① 分散実行機能。Hadoopで有名なあの処理
② 処理の流れ(インプットデータは事前に保持) 1. Jobを実行する
2. データ保持しているサーバでMap処理を実行
3. 中間データをCacheに保存
4. データ保持しているサーバでReduce処理を実行
5. 結果をJobに返す
Advanced Tech Night
28
Infinispan Infinispan
Map
In
Reduce
tmp
Infinispan Infinispan
Map
In
Reduce
tmp
①
①
②
②
④ ⑤
Job実行 Job実行
③
③
③
④
⑤
Data Gridとしての機能(4/5)
4. Query API ① 全文検索エンジンApache Luceneの
Lucene Directoryの実装
② put時にデータのindexを作成・保持する
③ Hibernate Search APIを使って検索
Advanced Tech Night
29
図は公式サイトのUser Guide「Querying Infinispan」より引用
https://docs.jboss.org/author/display/ISPN/Querying+Infinispan
Data Gridとしての機能(5/5)
5. Grid File System ① メモリ上のファイルシステム
② ファイルに高速アクセス
③ 2個のCacheで構成される
• メタデータ(ファイル名)
• 実際のデータ
④ Infinispanの標準機能でReplicationを実現
Advanced Tech Night
30
Infinispan
Infinispan
Infinispan
File
Meta
File
Meta
File
Meta
App
App
まとめ
1. Infinispanとは? ① In-Memory Data Grid
2. Data Gridとは?
① サーバ分散による高速データアクセス
② 様々なデータを扱える
③ Jobを各サーバで分散実行可能
3. KVSとしてのInfinispan ① プロセスの関係による分類
Embedded modeとClient-Server mode
② データ保持方式による分類 Replicated modeとDistributed mode
Advanced Tech Night
31
まとめ
4. Data GridとしてのInfinispan
Advanced Tech Night
32
No. 機能 概要 メリット/デメリット
1 Cache Store データ永続化 Infinispanが終了しても、データが失われない
2 Distributed Executors 分散実行機能 一般的なタスクを実行
データが存在するサーバ上で高速・並列処理
3 MapReduce 分散実行機能 MapReduce処理を実行
データが存在するサーバ上で高速・並列処理
4 Query API 全文検索エンジン機能 複数サーバで高速に検索
5 Grid File System メモリ上のファイルシステム ・ファイルアクセスが高速 ・標準機能で冗長化
Advanced Tech Night
33
最後に、、、
あまり知られていないInfinispanですが
実は、他にも多くの機能があります
• Transaction
• Asynchronous API(非同期実行)
• L1 Cache(検索頻度が高いキーの検索を高速化)
• Rack Awareness(サーバの物理配置を考えた冗長化)
• Interceptor(Cacheに対してユーザが機能追加可能)
• Marshalling(データフォーマットのカスタマイズ)
• Continuous Query(Live Queryを発行。本体に未反映)
• Cross-datacentre replication (遠隔レプリケーション。9/19Alphaリリース)
• など、、、
Advanced Tech Night
34
Advanced Tech Night
35
是非Infinispanを 使ってみてください
Advanced Tech Night
36
ご静聴ありがとう ございました
Recommended