単なるキャッシュじゃないよ!?infinispanの紹介

37
Advanced Tech Night No.05 単なるキャッシュじゃないよ!? データグリッドプラットフォーム Infinispan の紹介 2012/09/20 Acroquest Technology 束野 仁政

description

単なるキャッシュじゃないよ!?Infinispanの紹介

Transcript of 単なるキャッシュじゃないよ!?infinispanの紹介

Page 1: 単なるキャッシュじゃないよ!?infinispanの紹介

Advanced Tech Night No.05

単なるキャッシュじゃないよ!? データグリッドプラットフォーム

Infinispanの紹介 2012/09/20

Acroquest Technology

束野 仁政

Page 2: 単なるキャッシュじゃないよ!?infinispanの紹介

自己紹介

束野 仁政(つかの さとゆき)

Acroquest Technology株式会社

@snuffkin

もやっています。フレンディングよろしく!

satoyuki

これまで経験した主な業務は、フレームワーク/プラットフォーム開発。

→基盤の開発に興味あります。

HadoopやInfinispan、Nettyを利用するプロジェクトを経験。

→ドキュメント少ない?OSSなら、ソースを読めばいいじゃない。

社内勉強会でCEPやMessagePackの解説を担当。

→流行りもの好き。

Advanced Tech Night

1

Page 3: 単なるキャッシュじゃないよ!?infinispanの紹介

はじめに

「KVS」(Key-Value Store)という単語を

聞いたことがある人?

Advanced Tech Night

2

「NoSQL」という単語を聞いたことがある人?

「Data Grid」という単語を聞いたことがある人?

Page 4: 単なるキャッシュじゃないよ!?infinispanの紹介

はじめに

Advanced Tech Night

3

Data Gridとは?

正確性に目をつむると、

高機能なKVS

ただし、 Infinispanは単なるKVSではない。

Data Grid Platform

Page 5: 単なるキャッシュじゃないよ!?infinispanの紹介

目次

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

Page 6: 単なるキャッシュじゃないよ!?infinispanの紹介

Advanced Tech Night

5

Infinispanとは?

第1章

Page 7: 単なるキャッシュじゃないよ!?infinispanの紹介

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

Page 8: 単なるキャッシュじゃないよ!?infinispanの紹介

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

Page 9: 単なるキャッシュじゃないよ!?infinispanの紹介

Data Gridとは?(2/5)

Data Gridとは?(概ねこんな認識) ① サーバ分散による高速データアクセス

→線形にスケールアウト

② 様々なデータを扱える →Infinispanの場合は、Javaオブジェクト

③ Jobを各サーバで分散実行可能 →各サーバに処理を配布 →ローカルデータにアクセスすることで高速化 →MapReduce等

Advanced Tech Night

8

さらに、InfinispanはIn-Memory Data Grid

Page 10: 単なるキャッシュじゃないよ!?infinispanの紹介

Data Gridとは?(3/5)

Data Gridの主な適用箇所

① Webシステムにおけるセッション情報の保持

Advanced Tech Night

9

Infinispan

Web/AP

サーバ

RDBMS

Infinispan

Web/AP

サーバ

Infinispan

Web/AP

サーバ

複数サーバで

セッション情報を共有

Page 11: 単なるキャッシュじゃないよ!?infinispanの紹介

Data Gridとは?(4/5)

Data Gridの主な適用箇所

② DBのキャッシュ(low latencyでデータアクセス)

Advanced Tech Night

10

Web/AP

サーバ

RDBMS Web/AP

サーバ

Web/AP

サーバ

Infinispan

Infinispan

Infinispan

DBのキャッシュを分散保持し

大量データに高速アクセス

Page 12: 単なるキャッシュじゃないよ!?infinispanの紹介

Data Gridとは?(5/5)

Data Gridの主な適用箇所

③ 分散実行

Advanced Tech Night

11

Infinispan

サーバ

Infinispan

サーバ

Infinispan

サーバ

Job実行

複数サーバでの実行により

並列性を増し、高速処理を実現

Page 13: 単なるキャッシュじゃないよ!?infinispanの紹介

Advanced Tech Night

12

Infinispanの使い方 ~KVS編~

第2章

Page 14: 単なるキャッシュじゃないよ!?infinispanの紹介

プロセスの関係による分類

データ保持方式による分類

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 各データを一部のサーバが保持する

○書き込みが高速 ×読み込みに時間がかかる

Page 15: 単なるキャッシュじゃないよ!?infinispanの紹介

プロセスの関係による分類(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

Page 16: 単なるキャッシュじゃないよ!?infinispanの紹介

プロセスの関係による分類(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

Page 17: 単なるキャッシュじゃないよ!?infinispanの紹介

プロセスの関係による分類(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. デフォルト設定で良いなら、これだけで利用可能

Page 18: 単なるキャッシュじゃないよ!?infinispanの紹介

プロセスの関係による分類(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. サポートしているメソッドに違いあり

Page 19: 単なるキャッシュじゃないよ!?infinispanの紹介

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

Page 20: 単なるキャッシュじゃないよ!?infinispanの紹介

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

Page 21: 単なるキャッシュじゃないよ!?infinispanの紹介

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”);

}

Page 22: 単なるキャッシュじゃないよ!?infinispanの紹介

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(自動選択)

Page 23: 単なるキャッシュじゃないよ!?infinispanの紹介

データ保持方式による分類(1/2)

1. Replicated mode

① 各データを全てのサーバが保持する

② 読み込みが高速

③ 書き込みに時間がかかる

Advanced Tech Night

22

putしたデータは

全てのサーバに送信される

Infinispan

Infinispan App

Infinispan

①put

②replica

②replica

Page 24: 単なるキャッシュじゃないよ!?infinispanの紹介

データ保持方式による分類(2/2)

2. Distributed mode

① 各データを一部のサーバが保持する

② 書き込みが高速

③ 読み込みに時間がかかる

Advanced Tech Night

23

putしたデータは

一部のサーバのみに送信される

Infinispan

Infinispan App

Infinispan

①put

②replica

replica

されないサーバ

Page 25: 単なるキャッシュじゃないよ!?infinispanの紹介

Advanced Tech Night

24

Infinispanの使い方 ~Data Grid編~

第3章

Page 26: 単なるキャッシュじゃないよ!?infinispanの紹介

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 メモリ上のファイルシステム ・ファイルアクセスが高速 ・標準機能で冗長化

Page 27: 単なるキャッシュじゃないよ!?infinispanの紹介

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

Page 28: 単なるキャッシュじゃないよ!?infinispanの紹介

Data Gridとしての機能(2/5)

2. Distributed Executors ① 分散実行機能

② データを保持しているサーバに処理を配布し、バッチ実行

③ ディスクアクセスや

ネットワークアクセスを

極力減らして高速化

Advanced Tech Night

27

Page 29: 単なるキャッシュじゃないよ!?infinispanの紹介

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実行

Page 30: 単なるキャッシュじゃないよ!?infinispanの紹介

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

Page 31: 単なるキャッシュじゃないよ!?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

Page 32: 単なるキャッシュじゃないよ!?infinispanの紹介

まとめ

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

Page 33: 単なるキャッシュじゃないよ!?infinispanの紹介

まとめ

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 メモリ上のファイルシステム ・ファイルアクセスが高速 ・標準機能で冗長化

Page 34: 単なるキャッシュじゃないよ!?infinispanの紹介

Advanced Tech Night

33

最後に、、、

Page 35: 単なるキャッシュじゃないよ!?infinispanの紹介

あまり知られていないInfinispanですが

実は、他にも多くの機能があります

• Transaction

• Asynchronous API(非同期実行)

• L1 Cache(検索頻度が高いキーの検索を高速化)

• Rack Awareness(サーバの物理配置を考えた冗長化)

• Interceptor(Cacheに対してユーザが機能追加可能)

• Marshalling(データフォーマットのカスタマイズ)

• Continuous Query(Live Queryを発行。本体に未反映)

• Cross-datacentre replication (遠隔レプリケーション。9/19Alphaリリース)

• など、、、

Advanced Tech Night

34

Page 36: 単なるキャッシュじゃないよ!?infinispanの紹介

Advanced Tech Night

35

是非Infinispanを 使ってみてください

Page 37: 単なるキャッシュじゃないよ!?infinispanの紹介

Advanced Tech Night

36

ご静聴ありがとう ございました