0
Advanced Tech Night No.05      単なるキャッシュじゃないよ!?      データグリッドプラットフォーム   Infinispanの紹介                                       ...
自己紹介 束野 仁政(つかの さとゆき) Acroquest Technology株式会社   @snuffkin   もやっています。フレンディングよろしく!   satoyuki これまで経験した主な業務は、フレームワーク/プラ...
はじめに「KVS」(Key-Value Store)という単語を聞いたことがある人?「NoSQL」という単語を聞いたことがある人?「Data Grid」という単語を聞いたことがある人?                              ...
はじめにData Gridとは?正確性に目をつむると、         高機能なKVSただし、 Infinispanは単なるKVSではない。     Data Grid Platform                             ...
目次1. Infinispanとは?  ① Infinispanプロフィール  ② Data Gridとは?2. Infinispanの使い方~KVS編~  ① 動作モードの分類  ② プロセスの関係による分類      • Client-Se...
第1章Infinispanとは?                           5     Advanced Tech Night
Infinispanプロフィール1. JBossファミリーの(In-Memory) Data Grid   Platform2. 公式サイト   http://www.jboss.org/infinispan.html3. JavaとScala...
Data Gridとは?(1/5)Data Gridに求められること                                             分散システム1. extreme scalability   サーバ増加により、線形に...
Data Gridとは?(2/5)Data Gridとは?(概ねこんな認識)  ① サーバ分散による高速データアクセス    →線形にスケールアウト  ② 様々なデータを扱える    →Infinispanの場合は、Javaオブジェクト  ③ ...
Data Gridとは?(3/5)Data Gridの主な適用箇所 ① Webシステムにおけるセッション情報の保持                                            複数サーバで              I...
Data Gridとは?(4/5)Data Gridの主な適用箇所 ② DBのキャッシュ(low latencyでデータアクセス)                                         DBのキャッシュを分散保持し  ...
Data Gridとは?(5/5)Data Gridの主な適用箇所 ③ 分散実行      複数サーバでの実行により     並列性を増し、高速処理を実現                         Infinispan          ...
第2章Infinispanの使い方     ~KVS編~                           12     Advanced Tech Night
プロセスの関係による分類No. 機能                   概要                         メリット/デメリット1   Embedded mode        ユーザが開発するアプリ            ...
プロセスの関係による分類(1/4)1. Embedded mode ① ユーザが開発するAppと   同一JVMでInfinispanを   動作させる ② AppとInfinispanとの関係は   1対1となる              図...
プロセスの関係による分類(2/4)2. Client-Server mode  ① ユーザが開発するAppと別JVMで    Infinispanを動作させる  ② AppのJVMから複数のServerに    アクセスする  ③ Appが個々...
プロセスの関係による分類(3/4)【Embedded mode】の実装例1. Cacheにデータを格納・取得・削除する例2. デフォルト設定で良いなら、これだけで利用可能public static void main(String[] args...
プロセスの関係による分類(4/4)【Client-Server mode】の実装例(Hot Rod)1. 基本的なメソッドはEmbedded modeと同じ2. サポートしているメソッドに違いありpublic static void main(...
Client-Server modeで利用できるプロトコル(1/4)【REST】 ① URLで操作対象のキーを指定   http://localhost:8080/infinispan/rest/CacheNam   e/key ② HTTPメ...
Client-Server modeで利用できるプロトコル(2/4)【Memcached】  ① KVSで利用される汎用的なプロトコル  ② telnetでアクセスして、コマンドラインでCache操作    可能// cacheにデータを格納>...
Client-Server modeで利用できるプロトコル(3/4)【Hot Rod】    ① Infinispan固有のプロトコル    ② Java, C#, Python, Rubyのクライアント有    ③ 通信先サーバをAppから隠...
Client-Server modeで利用できるプロトコル(4/4) 各プロトコルの特徴No. プロトコル       プロトコルの     利用可能な               通信先サーバの選択                汎用性   ...
データ保持方式による分類(1/2)1. Replicated mode  ① 各データを全ての                             putしたデータは                                     ...
データ保持方式による分類(2/2)2. Distributed mode  ① 各データを一部の                       putしたデータは                                一部のサーバのみに送...
第3章Infinispanの使い方 ~Data Grid編~                           24     Advanced Tech Night
InfinispanのData Gridとしての主な機能No. 機能                      概要                         メリット/デメリット1   Cache Store             デ...
Data Gridとしての機能(1/5)1. Cache Store  ① データの永続化  ② 永続化先                                App    Infinispan    • サポート済み       –...
Data Gridとしての機能(2/5)2. Distributed Executors  ① 分散実行機能  ② データを保持しているサーバに処    理を配布し、バッチ実行  ③ ディスクアクセスや    ネットワークアクセスを    極力...
Data Gridとしての機能(3/5)3. MapReduce  ① 分散実行機能。Hadoopで有名なあの処理  ② 処理の流れ(インプットデータは事前に保持)    1.   Jobを実行する    2.   データ保持しているサーバでM...
Data Gridとしての機能(4/5)4. Query API  ① 全文検索エンジンApache Luceneの    Lucene Directoryの実装  ② put時にデータのindexを作成・保持する  ③ Hibernate S...
Data Gridとしての機能(5/5)5. Grid File System  ① メモリ上のファイルシステム  ② ファイルに高速アクセス                                                   ...
まとめ1. Infinispanとは?  ① In-Memory Data Grid2. Data Gridとは?  ① サーバ分散による高速データアクセス  ② 様々なデータを扱える  ③ Jobを各サーバで分散実行可能3. KVSとしてのI...
まとめ4. Data GridとしてのInfinispanNo. 機能                      概要                         メリット/デメリット1   Cache Store             ...
最後に、、、                        33  Advanced Tech Night
あまり知られていないInfinispanですが実は、他にも多くの機能があります• Transaction• Asynchronous API(非同期実行)• L1 Cache(検索頻度が高いキーの検索を高速化)• Rack Awareness(...
是非Infinispanを使ってみてください                           35     Advanced Tech Night
ご静聴ありがとう ございました                         36   Advanced Tech Night
Upcoming SlideShare
Loading in...5
×

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

8,297

Published on

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

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,297
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
91
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

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

  1. 1. Advanced Tech Night No.05 単なるキャッシュじゃないよ!? データグリッドプラットフォーム Infinispanの紹介 2012/09/20 Acroquest Technology 束野 仁政
  2. 2. 自己紹介 束野 仁政(つかの さとゆき) Acroquest Technology株式会社 @snuffkin もやっています。フレンディングよろしく! satoyuki これまで経験した主な業務は、フレームワーク/プラットフォーム開発。 →基盤の開発に興味あります。 HadoopやInfinispan、Nettyを利用するプロジェクトを経験。 →ドキュメント少ない?OSSなら、ソースを読めばいいじゃない。 社内勉強会でCEPやMessagePackの解説を担当。 →流行りもの好き。 1 Advanced Tech Night
  3. 3. はじめに「KVS」(Key-Value Store)という単語を聞いたことがある人?「NoSQL」という単語を聞いたことがある人?「Data Grid」という単語を聞いたことがある人? 2 Advanced Tech Night
  4. 4. はじめにData Gridとは?正確性に目をつむると、 高機能なKVSただし、 Infinispanは単なるKVSではない。 Data Grid Platform 3 Advanced Tech Night
  5. 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 System4. まとめ 4 Advanced Tech Night
  6. 6. 第1章Infinispanとは? 5 Advanced Tech Night
  7. 7. Infinispanプロフィール1. JBossファミリーの(In-Memory) Data Grid Platform2. 公式サイト http://www.jboss.org/infinispan.html3. JavaとScalaで記述されたOSS4. ライセンスはLGPL v2.15. 主なコミッタはRed Hat社に所属6. 2012年8月、ようやく本が出版 「Infinispan Data Grid Platform」 6 Advanced Tech Night
  8. 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. 9. Data Gridとは?(2/5)Data Gridとは?(概ねこんな認識) ① サーバ分散による高速データアクセス →線形にスケールアウト ② 様々なデータを扱える →Infinispanの場合は、Javaオブジェクト ③ Jobを各サーバで分散実行可能 →各サーバに処理を配布 →ローカルデータにアクセスすることで高速化 →MapReduce等さらに、InfinispanはIn-Memory Data Grid 8 Advanced Tech Night
  10. 10. Data Gridとは?(3/5)Data Gridの主な適用箇所 ① Webシステムにおけるセッション情報の保持 複数サーバで Infinispan セッション情報を共有 Web/AP サーバ Infinispan Web/AP RDBMS サーバ Infinispan Web/AP サーバ 9 Advanced Tech Night
  11. 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. 12. Data Gridとは?(5/5)Data Gridの主な適用箇所 ③ 分散実行 複数サーバでの実行により 並列性を増し、高速処理を実現 Infinispan サーバ Infinispan Job実行 サーバ Infinispan サーバ 11 Advanced Tech Night
  13. 13. 第2章Infinispanの使い方 ~KVS編~ 12 Advanced Tech Night
  14. 14. プロセスの関係による分類No. 機能 概要 メリット/デメリット1 Embedded mode ユーザが開発するアプリ ○AppからInfinispanを ケーション(以下、App)と start/stopすることが可能 同一JVMで動作 ○Listener等、機能が豊富2 Client-Server mode Appと別JVMで動作 ○様々なプロトコルが利用可 ○外部プロセスから利用可 ○Appと独立して動作可能データ保持方式による分類No. 機能 概要 メリット/デメリット1 Replicated mode 各データを全てのサーバ ○読み込みが高速 が保持する ×書き込みに時間がかかる2 Distributed mode 各データを一部のサーバ ○書き込みが高速 が保持する ×読み込みに時間がかかる 13 Advanced Tech Night
  15. 15. プロセスの関係による分類(1/4)1. Embedded mode ① ユーザが開発するAppと 同一JVMでInfinispanを 動作させる ② AppとInfinispanとの関係は 1対1となる 図はManik Surtani 「Infinispan In-memory data grid meets NoSQL」より引用 http://www.slideshare.net/maniksurtani/infinspan-inmemory-data-grid-meets-nosql 14 Advanced Tech Night
  16. 16. プロセスの関係による分類(2/4)2. Client-Server mode ① ユーザが開発するAppと別JVMで Infinispanを動作させる ② AppのJVMから複数のServerに アクセスする ③ Appが個々のサーバを意識しなくて 良いように、Clientライブラリ内で 隠ぺい可能 (Hod Rod) 図はManik Surtani 「Infinispan In-memory data grid meets NoSQL」より引用 http://www.slideshare.net/maniksurtani/infinspan-inmemory-data-grid-meets-nosql 15 Advanced Tech Night
  17. 17. プロセスの関係による分類(3/4)【Embedded mode】の実装例1. Cacheにデータを格納・取得・削除する例2. デフォルト設定で良いなら、これだけで利用可能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”);} 16 Advanced Tech Night
  18. 18. プロセスの関係による分類(4/4)【Client-Server mode】の実装例(Hot Rod)1. 基本的なメソッドはEmbedded modeと同じ2. サポートしているメソッドに違いあり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”);} 17 Advanced Tech Night
  19. 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. 20. Client-Server modeで利用できるプロトコル(2/4)【Memcached】 ① KVSで利用される汎用的なプロトコル ② telnetでアクセスして、コマンドラインでCache操作 可能// cacheにデータを格納> set key value// cacheからデータを取得> get keyvalue// cacheからデータを削除> delete key ③ Client Appで通信先サーバを選択する実装が必要 19 Advanced Tech Night
  21. 21. Client-Server modeで利用できるプロトコル(3/4)【Hot Rod】 ① Infinispan固有のプロトコル ② Java, C#, Python, Rubyのクライアント有 ③ 通信先サーバをAppから隠ぺい~Smart Routingpublic 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
  22. 22. Client-Server modeで利用できるプロトコル(4/4) 各プロトコルの特徴No. プロトコル プロトコルの 利用可能な 通信先サーバの選択 汎用性 データ型1 REST ○ △ String △ ロードバランサ2 Memcached ○ △ String × App側で実装3 Hot Rod × ○ 任意 ○ Smart Routing(自動選択) ※正式サポートしていないが、WebSocketのインタフェース有 分散環境でClient-Server modeを使う場合は 基本的にHot Rodを選択することに なるのでは? 21 Advanced Tech Night
  23. 23. データ保持方式による分類(1/2)1. Replicated mode ① 各データを全ての putしたデータは 全てのサーバに送信される サーバが保持する ② 読み込みが高速 Infinispan ③ 書き込みに時間がか かる ①put ②replica App Infinispan ②replica Infinispan 22 Advanced Tech Night
  24. 24. データ保持方式による分類(2/2)2. Distributed mode ① 各データを一部の putしたデータは 一部のサーバのみに送信される サーバが保持する ② 書き込みが高速 Infinispan ③ 読み込みに時間が かかる ①put ②replica App Infinispan replica されないサーバ Infinispan 23 Advanced Tech Night
  25. 25. 第3章Infinispanの使い方 ~Data Grid編~ 24 Advanced Tech Night
  26. 26. InfinispanのData Gridとしての主な機能No. 機能 概要 メリット/デメリット1 Cache Store データ永続化 Infinispanが終了しても、 データが失われない2 Distributed Executors 分散実行機能 データが存在するサーバ 一般的なタスクを実行 上で高速・並列処理3 MapReduce 分散実行機能 データが存在するサーバ MapReduce処理を実行 上で高速・並列処理4 Query API 全文検索エンジン機能 複数サーバで高速に検 索5 Grid File System メモリ上のファイルシステム ・ファイルアクセスが高速 ・標準機能で冗長化 25 Advanced Tech Night
  27. 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. 28. Data Gridとしての機能(2/5)2. Distributed Executors ① 分散実行機能 ② データを保持しているサーバに処 理を配布し、バッチ実行 ③ ディスクアクセスや ネットワークアクセスを 極力減らして高速化 27 Advanced Tech Night
  29. 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. 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. 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. 32. まとめ1. Infinispanとは? ① In-Memory Data Grid2. Data Gridとは? ① サーバ分散による高速データアクセス ② 様々なデータを扱える ③ Jobを各サーバで分散実行可能3. KVSとしてのInfinispan ① プロセスの関係による分類 Embedded modeとClient-Server mode ② データ保持方式による分類 Replicated modeとDistributed mode 31 Advanced Tech Night
  33. 33. まとめ4. Data GridとしてのInfinispanNo. 機能 概要 メリット/デメリット1 Cache Store データ永続化 Infinispanが終了しても、 データが失われない2 Distributed Executors 分散実行機能 データが存在するサーバ 一般的なタスクを実行 上で高速・並列処理3 MapReduce 分散実行機能 データが存在するサーバ MapReduce処理を実行 上で高速・並列処理4 Query API 全文検索エンジン機能 複数サーバで高速に検 索5 Grid File System メモリ上のファイルシステム ・ファイルアクセスが高速 ・標準機能で冗長化 32 Advanced Tech Night
  34. 34. 最後に、、、 33 Advanced Tech Night
  35. 35. あまり知られていないInfinispanですが実は、他にも多くの機能があります• Transaction• Asynchronous API(非同期実行)• L1 Cache(検索頻度が高いキーの検索を高速化)• Rack Awareness(サーバの物理配置を考えた冗長化)• Interceptor(Cacheに対してユーザが機能追加可能)• Marshalling(データフォーマットのカスタマイズ)• Continuous Query(Live Queryを発行。本体に未反映)• Cross-datacentre replication (遠隔レプリケーション。9/19Alphaリリース)• など、、、 34 Advanced Tech Night
  36. 36. 是非Infinispanを使ってみてください 35 Advanced Tech Night
  37. 37. ご静聴ありがとう ございました 36 Advanced Tech Night
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×